Sql-Server

如何使用 Windows 身份驗證讓我的連結伺服器正常工作?

  • November 21, 2017

我正在嘗試在域環境中使用“使用登錄名的目前安全上下文進行製作”來獲取在另一台伺服器上創建的 ServerA 的連結伺服器,ServerB。我讀到我需要為在每台伺服器上執行 SQL Server 的服務帳戶創建 SPN 才能啟用 Kerberos。我已經這樣做了,現在兩者都顯示身份驗證方案是 Kerberos,但是,我仍然面臨錯誤:

"Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'".

在 Active Directory 中,我可以看到 ServerB 的服務帳戶受信任以委派給 MSSQLSvc,但我注意到 ServerA 的服務帳戶尚未啟用“信任此使用者進行委派”。目標伺服器是否也需要啟用該選項?為了能夠使用目前的 Windows 登錄名來使用連結伺服器,是否還需要其他任何東西?

從您的桌面到您正在呼叫的伺服器的鏈中的每台機器都必須啟用 Kerberos 才能使信任超過第一個躍點。所以,是的,伺服器需要信任使用者進行委派。

“使用者 ‘NT AUTHORITY\ANONYMOUS LOGON’ 登錄失敗”幾乎總是表明存在委派問題。

  • 您的 Windows 帳戶必須有權訪問 ServerA 和 ServerB。
  • 您不得設置“帳戶敏感,無法委派”。
  • ServerA 和 ServerB 都必須註冊自己的 SPN。
  • 伺服器必須通過 TCP/IP 或命名管道連接。

提供更多詳細資訊的 SQL Server 聯機叢書文章是“為委派配置連結伺服器”:http: //msdn.microsoft.com/en-us/library/ms189580 (v=sql.105).aspx

這裡有兩件事:

  1. 當使用連結伺服器而不將本地伺服器登錄映射到遠端伺服器時,不要登錄到遠端電腦並使用 Windows 登錄來執行腳本。雙跳問題開始發揮作用,因為它使用模擬。
  2. 此外,您還需要通過 DCOMCNFG 設置本地 DTC 以進行通信。見附圖。

(DCOMCNFG -> 組件服務 -> 電腦 -> 我的電腦 -> 分佈式事務協調器 -> LocalDTC -> 屬性 -> 安全)

在此處輸入圖像描述

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