【DB宝98】SQL Server配置链接服务器

2022-04-11 20:34:16 浏览数 (1)

简介

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

0 人点赞