在SSMS 2008中,我尝试在另一台服务器上的数据库中执行存储过程。该调用类似于以下内容:
EXEC [RemoteServer].Database.Schema.StoredProcedureName
@param1,
@param2
链接服务器设置正确,并且RPC and RPC OUT
都设置为true。链接服务器上的安全性设置为Be made using the login's current security context
。
当我尝试执行存储过程时,出现以下错误:
Msg 18483, Level 14, State 1, Line 1
Could not connect to server 'RemoteServer' because '' is not defined as a remote login at the server. Verify that you have specified the correct login name.
我使用Windows身份验证连接到本地服务器。有人知道为什么我会收到这个错误吗?
答案 0 :(得分:2)
'使用登录的当前安全上下文'转换为模拟(也称为SQL Server中的“自映射”,以术语链接)。在模拟上下文下访问远程服务器意味着委派。因此,您需要设置约束委派,请参阅Configuring Linked Servers for Delegation:
客户要求
- Windows用户必须具有对SQLSERVER1和的访问权限 SQLSERVER2。
- 用户AD属性帐户敏感且无法委派不得 地选择。
- 客户端计算机必须使用TCP / IP或命名管道网络连接。
第一个/中间服务器的要求(SQLSERVER1)
- 服务器必须具有域管理员注册的SPN。
- 必须信任运行SQL Server的帐户才能进行委派。
- 服务器必须使用TCP / IP或命名管道网络连接。
- 必须为自映射配置链接服务器登录。
第二台服务器的要求(SQLSERVER2)
- 如果使用TCP / IP网络连接,则服务器必须具有域管理员注册的SPN。
- 服务器必须使用TCP / IP或命名管道网络连接。
答案 1 :(得分:0)
运行以下命令,它可以为您修复
exec sp_AddRemoteLogin 'YourServerName','LoginName'
我认为(不确定)两台机器上的密码必须相同。