建立链接服务器的安全性
在链接服务器的连接过程(如处理分布式查询时)中,发送服务器提供登录名和密码以代表自己连接到接收服务器。为了使该连接有效,请使用 Microsoft® SQL Server™ 存储过程在链接服务器之间创建登录映射。
链接服务器登录映射可通过 sp_addlinkedsrvlogin 添加,通过 sp_droplinkedsrvlogin 删除。链接服务器登录映射为给定的链接服务器和本地登录建立远程登录和远程密码。SQL Server 在连接到链接服务器以执行分布式查询或存储过程时,将查找正在执行查询或存储过程的当前登录的任何登录映射。如果有一个登录映射,SQL Server 在连接到链接服务器时将发送相应的远程登录和密码。
假设使用远程密码"my_pwd"为链接服务器 S1 建立了一个从本地登录 U1 到远程登录 U2 的映射。如果本地登录 U1 执行了分布式查询来访问链接服务器 S1 中存储的表,当 SQL Server 连接到链接服务器 S1 时,U2 和 my_pwd 将作为用户 ID 和密码传递到该服务器。
例如,使用远程密码"my pwd"为链接服务器 S1 建立了一个从本地登录 U1 到远程登录 U2 的映射。如果本地登录 U1 执行分布式查询来访问链接服务器 S1 中存储的表,当 SQL Server 连接到链接服务器 S1 时,U2 和 my pwd 将作为用户 ID 和密码传递到该服务器。
链接服务器配置的默认映射模拟了登录的当前安全凭据。这类映射称为自映射。如果使用 sp_addlinkedserver 添加链接服务器,则将为所有本地登录添加默认自映射。
如果安全帐户委托在客户端或发送服务器上不可用,或者链接服务器/提供程序不能识别 Windows 身份验证模式,则自映射对 Windows 授权登录不起作用。因此,需要建立从 Windows 授权登录到链接服务器上的特定登录的本地登录映射。这种情况下,如果链接服务器是 SQL Server 实例,则远程登录将是 SQL Server 授权登录。
如果安全帐户委托可用且链接服务器支持 Windows 身份验证,则支持 Windows 授权登录的自映射。有关安全帐户委托的更多信息,请参见安全帐户委托。
分布式查询受限于链接服务器在远程表上授予远程登录的权限。处理分布式查询时,SQL Server 在编译时不执行任何权限验证。提供程序在查询执行时检测并报告任何违反权限的行为