关于跨服务器存取SQL Server数据库的方法(sp_addlinkedserver)
内容提示:关于跨服务器直接连接存取SQL Server数据库的问题,有两种方法可以实现:
一、利用OPENDATASOURCE直接连接即时存取。
insert 本地库名..表名 select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名
二、使用较稳定的联结服务器(sp_addlinkedserver):
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go
--创建链接服务器
exec sp_addlinkedserver 'lnk','','SQLOLEDB','另一台机'
exec sp_addlinkedsrvlogin 'lnk','false',null,'sa','密码'
go
--插入数据:
select * insert into [02].dbo.[002] from lnk.[01].dbo.[001]
--上面的插入语句写错了,改一下:
select * into [02].dbo.[001] from lnk.[01].dbo.[001]
--如果只临时插入数据,可以用:
select * into [02].dbo.[001] from openrowset('sqloledb','另一台机';'sa';'密码',[01].dbo.[001])