存储过程跨服务器拷贝数据问题
存储过程跨服务器拷贝数据问题
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。
这是什么原因呢?
------解决方案-------------------- 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调用是哪个账?
------解决方案--------------------你可以创建一次永久使用。上面的错误是说没有创建'MLDBSQL'Linked server,需要创建成功后才可以使用。