我有问题。当我使用语句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代理用户访问链接服务器的权限。
答案 0 :(得分:0)
好的我已经找到了解决方案。添加
GO
在EXECUTE AS之后,解决了问题......