通过将条目添加到 master.dbo.sysremotelogins 对新远程服务器用户进行授权。
sp_addremotelogin <remoteserver>[,< loginame>[, <remotename>] ]
是对其应用远程登录名的远程服务器的名称。此服务器必须通过 master.dbo.sysservers 表中的条目为本地服务器所知,该条目是通过 sp_addserver 创建的。
注意
本手册页使用“本地服务器”一词是指执行在“远程服务器”中运行的远程过程的服务器。
是本地服务器上用户的登录名。<loginame> 必须已存在于 master.dbo.syslogins 表中。
是远程服务器在登录到本地服务器时所使用的名称。所有未与一个本地 <loginame> 显式匹配的 <remotenames> 将自动与一个本地名称匹配。在示例 1 中,本地名称是用于登录的远程名称。在示例 2 中,本地名称是“albert”。
在 sysremotelogins 表中为远程服务器 GATEWAY 创建一个条目以进行登录验证。当本地和远程服务器具有相同的用户时,这是一种将远程名称映射到本地名称的简便方法:
sp_addremotelogin GATEWAY
本示例将在 sysremotelogins 中创建一行,其中 suid 列值为 -1,remoteusername 值为 NULL。
创建一个条目,该条目将远程服务器 GATEWAY 中的所有登录名映射到本地用户名“albert”。SAP ASE 服务器会将一行添加到 sysremotelogins 中,其 suid 列是 Albert 的服务器用户 ID,remoteusername 是空值:
sp_addremotelogin GATEWAY, albert
若要让这些登录名能够在本地服务器上运行 RPC,在登录到本地服务器时,它们必须为 RPC 连接指定一个口令,或者它们必须在本地服务器上是“trusted”。若要将这些登录名定义为“trusted”,请使用 sp_remotelogin。
将远程服务器 GATEWAY 上远程用户“pogo”的远程登录名映射到本地用户“ralph”。SAP ASE 服务器会将一行添加到 sysremotelogins 中,其 suid 列是 Ralph 的服务器用户 ID,remoteusername 列是“pogo”:
sp_addremotelogin GATEWAY, ralph, pogo
a. 使用 sp_addremotelogin 时,还存在一些其它注意事项:
b. 当收到远程登录名时,本地服务器以三种不同的方式尝试将远程用户映射到本地用户:
sysremotelogins 中查找与远程服务器名和远程用户名匹配的行。如果本地服务器找到匹配的行,则将使用该行的本地服务器用户 ID 登录远程用户。这适用于来自指定远程用户的映射。
sysremotelogins 表中是否存在具有空远程名称并且本地服务器用户 ID 为 -1 的条目。如果找到这样的行,则本地服务器使用远程服务器提供的远程名称在 syslogins 表中查找本地服务器用户 ID。这适用于远程服务器和本地服务器中的登录名相同的情况。
c. 本地用户的名称在远程服务器上可能有所不同。
d. 如果使用 sp_addremotelogin 将远程服务器的所有用户映射到相同的本地名称,则可以使用 sp_remotelogin 为这些用户指定“trusted”选项。例如,如果服务器 GOODSRV 中映射到“albert”的所有用户都将是“trusted”,则按如下方式使用 sp_remotelogin:
sp_remoteoption GOODSRV, albert, NULL, trusted, true
未指定为“trusted”的登录名不能在本地服务器上执行 RPC,除非它们在登录远程服务器时指定本地服务器的口令。在 Open Client Client-Library 中,用户可以使用 ct_remote_pwd 例程为服务器到服务器的连接指定口令。isql 和 bcp 不允许用户为 RPC 连接指定口令。
如果用户使用“统一登录”登录远程服务器,则这些登录名已通过安全性机制的验证。这些登录名在本地服务器上也必须是受信任的,否则用户在登录远程服务器时必须指定服务器的口令。
e.每个远程登录名条目都具有一个状态。trusted 选项的缺省状态是 false(不受信任)。这意味着,当远程登录名使用该条目时,将对口令进行检查。如果您不想检查口令,请使用 sp_remotelogin 将 trusted 选项的状态更改为 true。