我使用以下内容在我的服务器上创建了一个链接服务器:
exec sp_addlinkedserver
@server=N'MyOldDB',
@srvproduct=N'',
@provider = N'SQLNCLI',
@datasrc=N'MYSERVER',
@catalog=N'TheDefaultDatabase';
Run Code Online (Sandbox Code Playgroud)
现在,尽管以下描述了如何确定登录凭据(来自 MSDN):
本地服务器上的所有登录名和链接服务器上的远程登录名之间的默认映射是通过执行 sp_addlinkedserver 自动创建的。默认映射说明 SQL Server 在代表登录名连接到链接服务器时使用本地登录名的用户凭据。这相当于执行 sp_addlinkedsrvlogin 并将链接服务器的 @useself 设置为 true,而不指定本地用户名。
我收到以下错误:
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时:
select top 10 * from MyOldDB.TheDefaultDatabase.dbo.Batches
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我正确的方向吗?
我知道可以将存储过程的执行权限设置为数据库角色或用户。我的问题是,如何确定对 SP 访问的任何表的访问权限?调用 SP 的主体是否也必须对 SP 接触的底层对象具有必要的权限?