Sql-Server
如何使用 Windows 身份驗證讓我的連結伺服器正常工作?
我正在嘗試在域環境中使用“使用登錄名的目前安全上下文進行製作”來獲取在另一台伺服器上創建的 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
這裡有兩件事:
- 當使用連結伺服器而不將本地伺服器登錄映射到遠端伺服器時,不要登錄到遠端電腦並使用 Windows 登錄來執行腳本。雙跳問題開始發揮作用,因為它使用模擬。
- 此外,您還需要通過 DCOMCNFG 設置本地 DTC 以進行通信。見附圖。
(DCOMCNFG -> 組件服務 -> 電腦 -> 我的電腦 -> 分佈式事務協調器 -> LocalDTC -> 屬性 -> 安全)