2013-10-15 69 views
0

我遇到問題。當我使用語句execute as,然後想要使用該原則從鏈接服務器打開數據時,openquery查詢不是以User2原理運行,而是使用運行查詢的登錄名(User1)運行。我故意爲User1提供了鏈接服務器的錯誤憑證。下面的查詢給出錯誤EXECUTE AS和OPENQUERY連接的服務器

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服務器代理用戶訪問鏈接的服務器。

回答

0

好的我已經找到了解決方案。添加

GO 

後EXECUTE AS,解決了問題...