use ompps--在目的服务器 (127.0.0.1)中运行下列内容,将以追加方式,从源服务器(10.1.6.18)按条件复制表 ClientTypes 指定时间内的数据至目的服务器
exec sp_addlinkedserver @server='abc',@provider='sqloledb',@srvproduct='abc',@datasrc='192.168.0.2' 
GOexec sp_addlinkedsrvlogin  @rmtsrvname='abc',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='sa' 
GOexec sp_addlinkedserver @server='xyz',@provider='sqloledb',@srvproduct='xyz',@datasrc='192.168.0.3' 
GOexec sp_addlinkedsrvlogin  @rmtsrvname='xyz',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='sa' 
GOInsert into XYZ.OMPPS.DBO.ClientIDTypes
 
select *  from ABC.OMPPS.DBO.ClientIDTypes 
GOexec sp_droplinkedsrvlogin 'xyz' ,'sa' 
GOexec sp_dropserver  'xyz' 
GOexec sp_droplinkedsrvlogin 'abc' ,'sa' 
GOexec sp_dropserver  'abc' 
GO
上述直接运行没问题,可出现正确结果 ;可放在job里面运行就没有结果了,我将运行后的结果记录在文本中,如下:Msg 15028, Sev 16, State 1, Line 89 : The server 'abc' already exists. [SQLSTATE 42000]但我通过 exec sp_helpserverexec sp_linkedservers
go
 
是没有出现 'abc'的。请各位指点帮忙,谢谢!!!

解决方案 »

  1.   


    你在最后不是DROP 了吗
      

  2.   

    没有DROP吧 
    建议写成if exists(....) is not null   drop ....形式的
      

  3.   


    如果没有Drop的话,为什么我通过 exec sp_helpserver 命令查不出呢?
      

  4.   

    链接服务器为什么要用sql语句动态添加?这种架构性的东西你应该在数据库中一次性部署掉
      

  5.   


    因为我做的是一个job,希望能定时运行
      

  6.   

    job和链接服务器有什么关系?你把链接服务器一次性加好,job的代码里面直接访问不就行了?