简介
SQL Server的链接服务器,相当于Oracle的dblink,主要用于对远程的DB进行操作。
2000与2005对比:在SQL Server 2000版本中也有链接远程DB的SQL,但是功能比较弱,扩展性差,支持的查询比较简单。而SQL Server 2005版本的SSMS中已经有了 服务器对象->链接服务器 的功能点,用户首先创建一个远程DB的链接对象,之后就可以像本地表一样执行表的DML了。
创建过程
打开SSMS,服务器对象->链接服务器->右击 新建链接服务器
方式1:直接创建
这里的链接服务器必须写目标服务器的IP地址
方式2:使用ODBC链接SQL Server
image-20220406164203482
方式3:sql方式
在本地服务器上注册远程服务器的信息,创建linkedServer,操作代码如下:
代码语言:javascript复制exec sp_addlinkedserver @server='serveralias',@srvproduct='',@catalog='tempdb',@provider='SQLOLEDB',
@provstr='DRIVER={SQL Server};Initial Catalog=dbname;SERVER=192.168.1.66;UID=sa;PWD=;'
其中@server名称随便取,@catalog为数据库名,@provider为数据库驱动,@provstr为连接字符串,修改server、uid和pwd即可。
然后使用
代码语言:javascript复制EXEC sp_addlinkedsrvlogin 'serveralias','false',NULL,'username','password'
注册login帐号,然后你就可以执行一个Sql语句,试试看看是否可以从链接服务器中操作数据了。
示例:
代码语言:javascript复制exec sp_addlinkedserver @server='link2',@srvproduct='',@catalog='tempdb',@provider='SQLOLEDB',
@provstr='DRIVER={SQL Server};Initial Catalog=dbname;SERVER=192.168.66.238;UID=sa;PWD=lhr;'
EXEC sp_addlinkedsrvlogin 'link1','false',NULL,'sa','lhr'
SELECT * FROM [link2].tempdb.sys.databases ;
访问
“联机名.数据库名.dbo.表名”
代码语言:javascript复制-- 例如
SELECT * FROM "192.168.66.238".tempdb.sys.databases ;
SELECT * FROM [192.168.66.238].tempdb.sys.databases ;
SELECT * FROM "192.168.60.196".lhrdb.dbo.t1 ;
参考
https://www.cnblogs.com/gaizai/archive/2010/09/09/1821071.html
https://blog.csdn.net/weixin_43926268/article/details/109846295
https://docs.microsoft.com/zh-cn/previous-versions/office/project-server-2010/ee683995(v=office.14)
https://docs.microsoft.com/zh-cn/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-ver15