首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

菜鸟请问sql语句!

2012-06-05 
初学者请教sql语句!!!!我需要从远程数据库中读取数据,然后插入本地数据库中的表中,一下是sql语句:Exec sp_

初学者请教sql语句!!!!
我需要从远程数据库中读取数据,然后插入本地数据库中的表中,一下是sql语句:

Exec sp_droplinkedsrvlogin CServer,Null --删除隐射

Exec sp_dropserver CServer --删除服务器

EXEC sp_addlinkedserver --创建DBLINK

@server= 'CServer',--被訪問的服務器別名
@srvproduct= '',
@provider= 'SQLOLEDB',
@datasrc= '113.110.94.210,1433' --要訪問的服務器
EXEC sp_addlinkedsrvlogin
'CServer', --被訪問的服務器別名
'false',
NULL,
'sa', --帳號
'12345' --密碼
insert Test.dbo.Detect select * from CServer.test1.dbo.Detect1

以上语句均可执行。现在有以下几个问题:

1.新建作业时,以上语句放在1步里反复执行,第一行和第二行会报错,应为CServer还未创建,因此,如何用if语句判断CServer服务器和隐射是否存在?如果存在再执行,否则不执行第一行和第二行语句。

2.最后一行插入数据的时候,如何判断上次插入的结束点,使其反复执行的时候能够只插入新数据,而不是每次都把所有数据重新插一遍,这样会有重复。

3.如果远程数据库不止一个,只需要多写几个中间部分的代码创建多个'CServer'就可以了么?

各位高手,以上的sql语句如何修改?








[解决办法]

SQL code
--a 本地表 tablename 远程表 此处令其别名为b,若两表列若不同,将列列出即可,--关联条件a的主键pk1,pk2和远程服务器表(此处别名b)的主键,有几个关联几个insert into a    select * from [server].[database].[dbo].[tablename] b    where not exists (select 1            from a a1            where a1.pk1=b.pk1 and a1.pk2=b.pk2);
[解决办法]
try this,
SQL code
if exists(select 1 from sys.servers where name='CServer')begin  Exec sp_droplinkedsrvlogin CServer,Null --删除隐射  Exec sp_dropserver CServer --删除服务器endEXEC sp_addlinkedserver --创建DBLINK@server= 'CServer',--被訪問的服務器別名@srvproduct= '',@provider= 'SQLOLEDB',@datasrc= '113.110.94.210,1433' --要訪問的服務器EXEC sp_addlinkedsrvlogin'CServer', --被訪問的服務器別名'false',NULL,'sa', --帳號'12345' --密碼insert into Test.dbo.Detect select a.* from CServer.test1.dbo.Detect1 aleft join Test.dbo.Detect b on a.[主键]=b.[主键]where b.[主键] is null 

热点排行