Sql-Server

作為訪問連結伺服器的 SQL 登錄執行的作業的“目前安全上下文不受信任”

  • November 26, 2019

我遇到了錯誤“訪問遠端伺服器被拒絕,因為目前的安全上下文不受信任。

$$ 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 角色或任何此類管理角色

引用自:https://dba.stackexchange.com/questions/114723