Sql-Server
作為訪問連結伺服器的 SQL 登錄執行的作業的“目前安全上下文不受信任”
我遇到了錯誤“訪問遠端伺服器被拒絕,因為目前的安全上下文不受信任。
$$ SQLSTATE 42000 $$(錯誤 15274)“在嘗試從作業執行儲存過程時,並且儲存過程查詢連結伺服器。作業配置為作為 SQL 登錄名執行,我將其稱為 user1,並且我已經給了 user1在每個可能的地方獲得許可和所有權。 以下是作業的設置方式:
- 所有者為 user1 的 SQL Server 代理作業
- 作業中的一個步驟在“高級”選項卡上配置為“以使用者身份執行”user1(“正常”選項卡上的“執行身份”列表是一個空白列表——不確定這是否是一個因素)
- 該步驟呼叫 user1 有權執行的儲存過程
- 儲存過程定義為
WITH EXECUTE AS 'user1'
- 連結伺服器具有 user1 的本地/遠端映射,其中輸入了遠端使用者和遠端密碼。兩台伺服器上的使用者名和密碼相同。“對於上面列表中未定義的登錄,連接將”選項設置為“使用登錄的目前安全上下文進行”。我還嘗試將此選項設置為“使用此安全上下文進行”,並重複 user1 及其密碼。
- user1 具有在遠端伺服器上查詢的適當權限。
- 我什至讓 user1 成為本地伺服器上的系統管理員
儘管如此,我仍然收到訪問錯誤。我一定是在某處遺漏了什麼……有什麼想法嗎?
我通過 1)
WITH EXECUTE AS 'user1'
從儲存過程中刪除子句和 2)user1
從作業中刪除來解決此問題——它不再是作業步驟的所有者或“以使用者身份執行”。我的最終配置是:
- SQL Server 代理作業所有者是系統管理員,而不是 user1
- 作業的步驟“以使用者身份執行”留空
- 該步驟呼叫 user1 有權執行的儲存過程
- 連結伺服器具有 user1 的本地/遠端映射,其中輸入了遠端使用者和遠端密碼。兩台伺服器上的使用者名和密碼相同。“對於上面列表中未定義的登錄,連接將”選項設置為“使用登錄的目前安全上下文進行”。
- user1 具有在遠端伺服器上查詢的適當權限。
- user1 不需要具有 sysadmin 角色或任何此類管理角色