0

我有个问题。当我使用语句 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 代理用户访问链接服务器的权限。

4

1 回答 1

0

好的,我已经找到了解决方案。添加

GO

EXECUTE AS后,解决了问题...

于 2013-10-15T07:56:58.927 回答