我有个问题。当我使用语句 execute as 然后想要使用该原则从链接服务器打开数据时,openquery 查询不是使用 User2 原则运行的,而是使用运行查询的登录名 (User1)。我故意为 User1 提供了错误的链接服务器凭据。以下查询给出错误
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'LinkedServerUser1'.
询问:
USE Database1
EXECUTE AS LOGIN = 'User2'
IF EXISTS(
SELECT *
FROM
OPENQUERY(LinkedServer1,'
SELECT
name
,state
,state_desc
FROM sys.databases
WHERE name = ''DatabaseLinked1'' AND state = 0
'
)
)
BEGIN
PRINT 'test'
END
REVERT
需要它来工作,因为通常此查询将由 SQL Server 代理运行,并且我不想授予 SQL Server 代理用户访问链接服务器的权限。