建立远程服务器的安全性
设置对远程服务器执行远程存储过程调用 (RPC) 的安全性时,涉及的工作包括在远程服务器中建立登录映射,可能还包括在运行 Microsoft® SQL Server™ 实例的本地服务器中建立登录映射。
说明 支持远程服务器只是为了向后兼容。新的应用程序如果必须对 SQL Server 的远程实例执行存储过程,应该使用链接服务器。
设置远程服务器
必须在远程服务器上设置远程登录映射。使用这些映射,远程服务器将来自特定服务器的 RPC 连接的外来登录映射到本地登录。可以使用 sp_addremotelogin 存储过程在远程服务器上设置远程登录映射。
设置本地服务器
在 SQL Server 2000 内,通过以下方法为 Windows 身份验证创建的远程服务器登录创建远程服务器连接:
- 可在本地服务器上设置本地登录映射,定义 SQL Server 实例与远程服务器建立 RPC 连接时所使用的登录和密码。
对于 Windows 身份验证所创建的登录,必须创建到登录名和密码的映射。此登录名和密码必须与远程服务器所需的外来登录和密码相匹配。
- 使用 sp_addlinkedsrvlogin 存储过程创建本地登录映射。
说明 对于 SQL Server 身份验证所创建的登录,不必为了对远程服务器执行存储过程而创建任何本地登录映射。
远程服务器安全性示例
假设有两个 SQL Server 安装:serverSend 和 serverReceive。serverReceive 配置为将来自 serverSend 的名为 Sales_Mary 的外来登录映射到 serverReceive 中名为 Alice 的 SQL Server 授权登录。另一个将来自 serverSend 的名为 Joe 的外来登录映射到 serverReceive 中名为 Joe 的 SQL Server 授权登录。
可以执行下面的 Transact-SQL 代码,以配置 serverSend 对 serverReceive 执行 RPC:
--Create remote server entry for RPCs from serverSend.
EXEC sp_addserver 'serverSend'
GO
--Create remote login mapping for login 'Sales_Mary' from serverSend
--to Alice.
EXEC sp_addremotelogin 'serverSend', 'Alice', 'Sales_Mary'
GO
--Set trusted option on for this mapping to disable password checking
--for Sales_Mary from serverSend.
EXEC sp_remoteoption 'serverSend', 'Alice', 'Sales_Mary', trusted, true
GO
--Create remote login mapping for login Joe from serverReceive to same login;
--assumes same password for Joe in both servers.
EXEC sp_addremotelogin 'serverSend', 'Joe', 'Joe'
GO
在 serverSend 上创建本地登录映射,将 Windows 授权登录 Sales\Mary 映射到登录 Sales_Mary。Joe 不需要本地映射,因为默认设置是使用相同的登录名和密码,并且 serverReceive 中有 Joe 的映射:
--Create a remote server entry for RPCs from serverReceive.
EXEC sp_addserver 'serverReceive'
GO
--Create a local login mapping for the Windows Authenticated login.
--Sales\Mary to Sales_Mary.
EXEC sp_addlinkedsrvlogin 'serverReceive', false, 'Sales\Mary',
'Sales_Mary,' NULL
GO