EXECUTE AS和OPENQUERY链接服务器

时间:2013-10-15 07:55:05

标签: sql sql-server-2008

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

1 个答案:

答案 0 :(得分:0)

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

GO

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