我使用以下内容在我的服务器上创建了一个链接服务器:
exec sp_addlinkedserver
@server=N'MyOldDB',
@srvproduct=N'',
@provider = N'SQLNCLI',
@datasrc=N'MYSERVER',
@catalog=N'TheDefaultDatabase';
现在,尽管下面描述了如何确定登录凭据(来自 MSDN):
本地服务器上的所有登录名和链接服务器上的远程登录名之间的默认映射是通过执行 sp_addlinkedserver 自动创建的。默认映射规定 SQL Server 在代表登录名连接到链接服务器时使用本地登录名的用户凭据。这等效于在链接服务器的 @useself 设置为 true 的情况下执行 sp_addlinkedsrvlogin,而无需指定本地用户名。
我收到以下错误:
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
当我尝试这样做时:
select top 10 * from MyOldDB.TheDefaultDatabase.dbo.Batches
谁能在这里指出我正确的方向?
您遇到的错误与登录无关。
这是在 SQL Server 尝试将 NT 登录令牌“传递”到远程服务器时引起的。它无权传递令牌。远程服务器会查找此内容,因为本地服务器使用集成安全性进行连接。
您需要为本地服务器配置“安全帐户委派” 。
至于默认映射...
MSDN 说的是,如果您在本地拥有“MyDomain\bob”,那么您将在本地“存储”一个名为“MyDomain\bob”的“虚拟”条目。两台服务器之间没有两台服务器的协调。这与运行此相同:
请注意,“MyDomain\MyGroup”没有被映射:只有离散的 NT 用户和 SQL 登录。不是 NT 组。
这一切都在“链接服务器的安全性”中进行了描述