最近用到了从另一个服务器插入数据到本地,使用了链接服务器,做一个链接服务器总结。
从服务器把用户表 user 的数据插入到本地的 user 表
--创建链接服务器 EXEC sp_addlinkedserver '链接服务器名称','','SQLOLEDB','IP地址' /* 例如:EXEC sp_addlinkedserver 'Linked','','SQLOLEDB','192.0.0.1' */ EXEC sp_addlinkedsrvlogin '链接服务器名称','false',null,'账户名','密码' /* 例如:EXEC sp_addlinkedsrvlogin 'Linked','false',null,'sa','123' */ --还可以使用windows验证方式登录,没试过。。。(当前用户账户密码和服务器一致,似乎是- - ...) |
-- 查询示例 select * from 链接服务器名称.数据库.dbo.表名 /*例如: select * from LinkName.Test.dbo.dept */ -- 导入本地表示例 select * into 本地表 from 链接服务器名称.数据库.dbo.表名 /*例如: select * INTO DEPT from LinkName.TestDB.dbo.dept */ exec sp_dropserver 'LinkName' , 'droplogins' -- 查询示例 -- 通过行集函数(OPENQUERY/OPENROWSET/OPENDATASOURCE)操作方法 --查询示例 SELECT * FROM OPENQUERY(Linked,'select * from 数据库名.架构名.表名') /* 示例: SELECT * FROM OPENQUERY(Linked,'select * from Test.dbo.dept ') */ --插入数据 INSERT OPENQUERY(LinkName, 'SELECT * FROM 数据库名.架构名.表名') (列,列...) SELECT 列,列... FROM 本地表 /* 示例: INSERT OPENQUERY(Linked,'select * from Test.dbo.dept ') (deptid,deptname) SELECT DEPTID,DEPTNAME FROM DEPT */ --更新本地表 UPDATE OPENQUERY(LinkName, 'SELECT * FROM 数据库名.架构名.表名') SET 字段='值' WHERE 字段='条件' /* 示例: UPDATE OPENQUERY(LinkName, 'SELECT * FROM Test.dbo.dept ') SET DeptName='小辛' WHERE DeptId=1 */ --删除示例 DELETE OPENQUERY(LinkName, 'SELECT * FROM 数据库名.架构名.表名') WHERE 字段名='条件' /* 示例: DELETE OPENQUERY(LinkName, 'SELECT * FROM Test.dbo.dept') WHERE DeptName = '小辛' */ --函数 OPENROWSET (不需要链接服务器) --查询示例 SELECT * FROM OPENROWSET ( 'SQLOLEDB' , 'SERVER=IP地址' ; '用户名' ; '密码',数据库名.架构名.表名 ) --或者 SELECT * FROM OPENROWSET ( 'SQLOLEDB' , 'SERVER=IP地址' ; '用户名' ; '密码','SELECT * FROM Test.dbo.dept' ) --插入,更新,删除 请参考 OPENQUERY方法使用 --OPENDATASOURCE方法(不需要用到链接名。如果连接的实例名不是默认的,需要在"sql服务器名或IP地址"后加上"/实例名") SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'server=sql服务器名或IP地址;uid=用户名;pwd=密码').数据库名.架构名.表名 --或者 SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Date Source=sql服务器名或IP地址;uid=用户名;pwd=密码').数据库名.架构名.表名 /* 例如: SELECT TOP 100 * FROM OPENDATASOURCE ( 'SQLOLEDB' , 'Server=192.0.0.1;uid=TestDB;pwd=123').TestDb.dbo.Dept */ --插入,更新,删除 请参考 OPENQUERY方法使用 推荐这篇文章,博主写的很详细!可以深入了解! SQL不同服务器数据库之间的数据操作整理(完整版) |