存储过程跨服务器拷贝数据问题create procedure  [dbo].[copytableA]
as
begin
 exec   sp_addlinkedserver    'MLDBSQL', 'ms','SQLOLEDB','computer1'
 exec   sp_addlinkedsrvlogin    'MLDBSQL','false', NULL,'sa','sa'
 insert into tableA (id,型号,规格)
 select id,型号,规格from MLDBSQL.datebase1.dbo.tableA 
 exec   sp_dropserver   'MLDBSQL','droplogins'
end以上存储过程在SQL查询分析器中执行成功,可以正常从computer1中的datebase1数据库中拷贝tableA
到本地SQL数据库中。但在VB.NET中调用exec copytableA时提示错误:
在 sys.servers 中找不到服务器 'MLDBSQL'。请验证指定的服务器名称是否正确。如果需要,请执行存储过程 sp_addlinkedserver 以将服务器添加到 sys.servers。这是什么原因呢?

解决方案 »

  1.   

     exec   sp_dropserver   'MLDBSQL','droplogins'
    --为何要drop掉 可以一直连接 不用每次动态生成的
    EXEC master.dbo.sp_addlinkedserver @server = N'DBserver', @srvproduct=N'SQL Server'
     /* For security reasons the linked server remote logins password is changed with ######## */
     
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'DBserver',@useself=N'False',@locallogin=N'sa',@rmtuser=N'linker',@rmtpassword='password'1. 要确保远程服务器要建立好rmtuser账号,如linker
    2. 在VB.NET中你使用linker去登录的,它相当于在本地的sa账号
    故要确认下VB.NET调用是哪个账?
      

  2.   

    你可以创建一次永久使用。上面的错误是说没有创建'MLDBSQL'Linked server,需要创建成功后才可以使用。