两种⽅式创建sqlserver链接服务器
创建链接服务器(SQL Server 数据库引擎)
本主题说明如何通过使⽤ SQL Server 或 SQL Server Management Studio 创建链接服务器和访问来⾃其他Transact-SQL 的数据。通过创建链接服务器,您可以使⽤来⾃多个数据源的数据。该链接服务器不必是其他SQL Server实例,尽管这种情况很常见。
背景
链接服务器让⽤户可以对 OLE DB 数据源进⾏分布式异类查询。在创建某⼀链接服务器后,可对该服务器运⾏分布式查询,并且查询可以联接来⾃多个数据源的表。如果链接服务器定义为 SQL Server实例,则可执⾏远程存储过程。
链接服务器的功能和必需的参数可能会有很⼤差异。本主题中的⽰例是典型⽰例,但并未描述所有选项。有关详细信息,请参阅的数据。
安全性
权限
在使⽤ Transact-SQL 语句时,需要具有ALTER ANY LINKED SERVER权限,或需要具有setupadmin固定服务器⾓⾊中的成员资格。使⽤ Management Studio 时,要求具有CONTROL SERVER权限,或者具有sysadmin固定服务器⾓⾊的成员⾝份。
如何创建链接服务器
您可以使⽤以下任意⼀项:
使⽤ SQL Server Management Studio
使⽤ SQL Server Management Studio 创建与其他 SQL Server 实例的链接服务器
1. 在 SQL Server Management Studio中,打开对象资源管理器,展开“服务器对象”,右键单击“链接服务器”,然后单击“新建
链接服务器”。
2. 在“常规”页上的“链接服务器”框中,键⼊您链接到的SQL Server实例的名称。
SQL Server
将链接服务器标识为 Microsoft SQL Server的实例。如果您使⽤此⽅法来定义某个 SQL Server 链接服务器,则在“链接服务
器”中指定的名称必须是该服务器的⽹络名称。另外,从该服务器上检索的所有表都来⾃该链接服务器上为相应登录名所定义的默认数据库。
指定 SQL Server以外的 OLE DB 服务器类型。单击此选项将激活其下⾯的选项。
提供程序
从列表框中选择 OLE DB 数据源。 OLE DB 访问接⼝是使⽤注册表中给定的 PROGID 注册的。
产品名称
键⼊要作为链接服务器添加的 OLE DB 数据源的产品名称。
数据源
根据 OLE DB 访问接⼝的说明,键⼊数据源名称。如果要连接到 SQL Server的实例,请提供实例名称。
访问接⼝字符串
键⼊与数据源相对应的 OLE DB 访问接⼝的唯⼀编程标识符 (PROGID)。有关有效访问接⼝字符串的⽰例,请参阅的数据。
位置
根据 OLE DB 访问接⼝的说明,键⼊数据库的位置。
⽬录
键⼊在连接 OLE DB 访问接⼝时要使⽤的⽬录的名称。
若要测试能否连接到链接服务器,请在对象资源管理器中,右键单击链接服务器,然后单击“测试连接”。
备注
如果该SQL Server实例是默认实例,则输⼊承载SQL Server实例的计算机的名称。如果该SQL Server是命名实例,则输⼊计算机名称和实例名称,例如Accounting\SQLExpress。
3. 在“服务器类型”区域中,选择SQL Server以便指⽰该链接服务器是SQL Server的另⼀个实例。
4. 在“安全性”页上,指定在原始 SQL Server 连接到链接服务器时将使⽤的安全上下⽂。在通过使⽤其域登录名连接⽤户的域环
境中,选择“使⽤登录名的当前安全上下⽂建⽴连接”通常是最佳选择。在⽤户通过使⽤SQL Server登录名连接到原始SQL Server时,最佳选择通常是选择“通过使⽤此安全上下⽂”,然后提供在链接服务器上进⾏⾝份验证时所必需的凭据。
本地登录
指定可连接到链接服务器的本地登录。本地登录可以是使⽤ SQL Server ⾝份验证的登录,也可以是使⽤ Windows ⾝份验证的登录。使⽤此列表可以将连接限定为特定的登录,也可以允许某些登录使⽤其他登录名进⾏连接。
Impersonate
将⽤户名和密码从本地登录传递到链接服务器。对于 SQL Server ⾝份验证,具有完全相同的名称和密码的登录必须存在于远程服务器中。对于 Windows 登录,登录必须是链接服务器中的有效登录。
若要使⽤模拟功能,配置必须满⾜委托的要求。
远程⽤户
使⽤远程⽤户映射“本地登录”中未定义的⽤户。“远程⽤户”必须是远程服务器中的 SQL Server ⾝份验证登录。
远程密码
指定远程⽤户的密码。
“添加”
添加新的本地登录。
删除
删除现有的本地登录。
不建⽴连接
指定不对列表中未定义的登录建⽴连接。
不使⽤安全上下⽂建⽴连接
指定对于列表中未定义的登录,不使⽤安全上下⽂建⽴连接。
使⽤登录当前的安全上下⽂建⽴连接
指定对于列表中未定义的登录,使⽤登录的当前安全上下⽂建⽴连接。如果使⽤ Windows ⾝份验证连接到本地服务器,则使⽤Windows 凭据连接到远程服务器。如果使⽤ SQL Server ⾝份验证连接到本地服务器,则在连接到远程服务器时需要使⽤登录名和密码。在这种情况下,具有完全相同的名称和
密码的登录必须存在于远程服务器中。
使⽤此安全上下⽂建⽴连接
指定对于列表中未定义的登录,使⽤“远程登录”和“使⽤密码”框中指定的登录名和密码建⽴连接。远程登录必须是远程服务器中的 SQL Server ⾝份验证登录。
5. 或者,若要查看或指定服务器选项,请单击“服务器选项”页。
影响分布式查询在链接服务器上的执⾏。如果该选项设置为 true,则 SQL Server 假定链接服务器中的所有字符在字符集和排序规则(或排序顺序)上与本地服务器兼容。这使 SQL Server 得以将字符列上的⽐较发送给提供程序。如果没有设置该选项,则 SQL Server 将始终在本地进⾏字符列上的⽐较。
只有在确信链接服务器所对应的数据源与本地服务器有相同的字符集和排序顺序时,才应当设置该选项。
数据访问
启⽤和禁⽤链接服务器以进⾏分布式查询访问。
RPC
从指定的服务器启⽤ RPC。
RPC Out
对指定的服务器启⽤ RPC。
使⽤远程排序规则
sql连接不上服务器
确定是使⽤远程列的排序规则还是使⽤本地服务器的排序规则。
如果为 True,则 SQL Server 数据源将使⽤远程列的排序规则,并且⾮ SQL Server 数据源将使⽤排序规则名称指定的排序规
则。
如果为 False,则分布式查询将始终使⽤本地服务器的默认排序规则,⽽排序规则名称和远程列的排序规则将被忽略。默认值为False。
排序规则名称
如果“使⽤远程排序规则”为 True,并且数据源不是 SQL Server 数据源,则指定远程数据源使⽤的排序规则名称。此名称必须
是 SQL Server⽀持的排序规则之⼀。
如果访问的是 SQL Server以外的 OLE DB 数据源,但该数据源的排序规则与 SQL Server 的某个排序规则匹配,则使⽤该选项。
链接服务器必须⽀持该服务器中所有列使⽤的单个排序规则。如果链接服务器⽀持单个数据源内的多个排序规则,或者如果⽆法确定链接服务器的排序规则是否与 SQL Server 的某个排序规则匹配,则不要设置该选项。
连接超时值
连接到链接服务器时的超时值(秒)。
如果为 0,则使⽤sp_configure默认选项值。
查询超时值
链接服务器上执⾏的查询的超时值(秒)。
如果为 0,则使⽤sp_configure默认选项值。
启⽤分布式事务处理的升级
使⽤该选项可通过 Microsoft 分布式事务处理协调器 (MS DTC) 事务保护服务器到服务器的操作过程。如果该选项是 TRUE,则调⽤远程存储过程将启动分布式事务,并⽤ MS DTC 登记该事务。有关详细信息,请参阅的数据。
6. 单击“确定” 。
查看提供程序选项
SQL Server 允许更新,即使ITransactionLocal不可⽤时也是如此。如果启⽤此选项,对访问接⼝的更新将不可恢复,因为该访问接⼝不⽀持事务。
作为访问路径的索引
SQL Server 尝试使⽤访问接⼝的索引来提取数据。默认情况下,索引只能⽤于元数据⽽且从不打开。
禁⽌即席访问
SQL Server 不允许通过 OPENROWSET 和 OPENDATASOURCE 函数对 OLE DB 访问接⼝进⾏即席访问。如果未设置此选
项,则 SQL Server 同样不允许进⾏即席访问。
⽀持 "Like" 运算符
指⽰访问接⼝⽀持使⽤ LIKE 关键字的查询。
使⽤ Transact-SQL
若要通过使⽤ Transact-SQL 创建链接服务器,请使⽤和语句。
使⽤ Transact-SQL 创建与其他 SQL Server 实例的链接服务器
1. 在查询编辑器中,输⼊以下 Transact-SQL 命令以便链接到名为 SQL Server 的SRVR002\ACCTG实例:
SQL复制
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver
@server = N'SRVR002\ACCTG',
@srvproduct=N'SQL Server' ;
GO
2. 执⾏以下代码,以便将链接服务器配置为使⽤正在使⽤链接服务器的登录名的域凭据。
SQL复制
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'SRVR002\ACCTG',
@locallogin = NULL ,
@useself = N'True' ;
GO
跟进:在创建链接服务器后采取的步骤
测试链接服务器
编写联接来⾃某⼀链接服务器的多个表的查询
SELECT local.name AS LocalLogins, linked.name AS LinkedLogins
FROM master.sys.server_principals AS local
LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked
ON local.name = linked.name ;
GO
如果为链接服务器登录名返回了 NULL,则意味着该登录名在链接服务器上不存在。这些登录名将⽆法使⽤链接服务器,除⾮链接服务器配置为传递不同的安全上下⽂或者链接服务器接受匿名连接。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。