適用於 SQL Server 的 Kerberos Configuration Manager 概觀

適用于:SQL Server

原始 KB 編號: 2985455

網路中不正確的 Kerberos 設定可能會在 Microsoft SQL Server 中造成各種連線錯誤。 適用於 SQL Server 的 Kerberos Configuration Manager 是一種診斷工具,可協助您針對會影響 SQL Server 的 Kerberos 相關連線問題進行疑難解答、SQL Server Reporting Services (SSRS) ,以及SQL Server Analysis Services (SSAS) 。 本文提供有關如何使用 Kerberos Configuration Manager 工具,以及如何解譯工具的輸出,以修正會影響 SQL Server 的 Kerberos 問題。

注意事項

Kerberos Configuration Manager 會依原狀提供,而且不會提供技術支援或更新。 尚未更新為使用 SQL Server 2022 和更新版本的 WMI 提供者。 若要針對 SQL Server 相關的 Kerberos 設定問題進行疑難解答和診斷,請參閱 SQLCheck

Kerberos Configuration Manager 的函式

Kerberos Configuration Manager 可以執行下列工作:

  • 收集安裝在伺服器上的OS、Microsoft SQL Server 實例和 Always On 可用性群組接聽程式的相關信息。
  • 報告伺服器上SPN) 和委派設定 (所有服務主體名稱。
  • 識別SPN和委派中的潛在問題。
  • 修正潛在的SPN問題。

使用情況

此工具可協助您針對下列例外狀況進行疑難解答:

  • 401

    注意: 此錯誤訊息適用於 HTTP 錯誤、SSRS 錯誤和其他類似錯誤。

  • 無法產生 SSPI 內容
  • 使用者 『NTAUTHORITY\ANONYMOUS LOGON』 的登入失敗
  • 使用者 '(null)' 登入失敗
  • 使用者 (空白) 登入失敗

注意事項

開始疑難解答問題之前,建議您檢閱必要條件,然後流覽一般檢查清單,以針對連線相關錯誤進行疑難解答。

注意事項

如果您有以 SQL Server 為基礎的計算機的系統管理員存取權,您也可以在該電腦上執行 SQL 連線設定檢查工具,然後檢閱輸出以檢查 SQL Server 實例的 SPN 設定。

下載工具

此工具可從 Microsoft 下載中心下載:

適用於 SQL Server 的 Microsoft Kerberos Configuration Manager

注意事項

您可以在網域中任何可連線到 SQL Server 型電腦的電腦上下載並安裝此工具。

權限

若要針對影響 SQL、SSRS 和 SSAS 的連線問題進行疑難解答,請使用具有該電腦系統管理許可權的網域用戶帳戶,連線到裝載服務) 的目的地電腦 (。

選擇性:如果您想要使用此工具來修正此工具所識別的任何SPN問題,網域帳戶應該具有 已驗證的寫入服務主體名稱權 限。

使用工具

安裝完成之後,流覽至安裝資料夾來啟動 KerberosConfigMgr.exe 二進位檔。 根據預設,SQL Server 的位置是 C:\Program Files\Microsoft\Kerberos Configuration Manager

如需如何以系統管理員或不同使用者身分啟動應用程式的相關信息,請參閱 使用執行以系統管理員身分啟動應用程式

使用下列其中一個選項來開始疑難解答:

  • 若要連線到遠端 SQL Server 型電腦,請輸入適當的 [伺服器名稱]、[域使用者名稱] 和 [密碼] 值

    注意事項

    Kerberos Configuration Manager 工具會使用 Windows API 來查詢及顯示 SQL Server 電腦的 Kerberos 設定相關信息。 因此,請一律輸入裝載 SQL Server 實例的計算機名稱,即使您要針對具名實例的 Kerberos 相關問題進行疑難解答也一樣。

  • 若要連線到本地伺服器,請選取 [連線] 來分析 Kerberos 設定。 在此情況下,您不需要指定伺服器名稱、網域使用者名稱或密碼。

    注意事項

    啟動工具的帳戶應該是本機系統管理員帳戶。 如需如何以系統管理員或不同使用者身分啟動應用程式的相關信息,請參閱 使用執行以系統管理員身分啟動應用程式

線上成功之後,下列螢幕快照會顯示所有相關的SPN。

Kerberos Configuration Manager 中所有三個索引標籤的檢視螢幕快照。

在此螢幕快照中,UI 具有下列索引標籤:

  • 系統:顯示使用者資訊和計算機資訊。

  • SPN:顯示 SPN (服務主體名稱) 目標伺服器上找到之每個 SQL Server 實例的相關信息,並提供所需的 SPN 及其狀態等詳細數據。

  • 產生:協助您尋找遺失和設定的SPN。 它也可協助您產生SPN產生腳本。

    1. 選取 [產生]
    2. 在開啟的對話框中,提供名稱 (在此案例中為 “generateSPN”) 、將 [另存 新檔類型 ] 設定為 Kerberos Config Mgr (.cmd) 檔案,然後選取 [儲存 ]

    提供 CMD 檔案名稱的對話方塊。

系統 會建立generateSPNss.cmd 檔案,您可以在命令提示字元中執行此檔案。 generateSPNss.cmd檔案的內容將類似下列範例:

:: This script is generated by the Microsoft® SQL Server® Kerberos Configuration Manager tool.

:: The script may update the system information, SPN settings and Delegation configurations of a given server.

:: SPN and Delegation configuration updates require Windows Domain Administrator permission to execute.

:: A Domain Admin should review the configurations recommended by this tool and take appropriate actions to enable Kerberos authentication.

:: Please contact Microsoft Support if Kerberos connection problem persists.

:: The file is intended to be run in domain `<DomainName>.com`"

:: Corrections for MSSQLSvc/`<HostName>.<DomainName>.com` **SetSPN -s MSSQLSvc/`<HostName>`. `<DomainName>`.com UserName** 
  • 使用 SetSPN 在服務帳戶底下建立 SPN 以進行 SQL Server。

  • 使用 修正 來修正問題並新增SPN。 只有當您有必要的許可權時,才能新增SPN。 當您選取 [修正] 時,會顯示下列工具提示:

    [修正] 選項以新增 SPN 的螢幕快照。

    注意事項

    此工具僅針對具有靜態埠的默認實例和具名實例,提供 [修正 ] 和 [ 產生 ] 命令。 對於使用動態埠的具名實例,建議您從動態埠切換至靜態埠,或提供必要的許可權,讓服務帳戶在每次啟動 SQL 服務時註冊和取消註冊 SPN。 否則,每當服務啟動時,您必須手動取消註冊並重新註冊對應的SPN。 如需詳細資訊,請參閱註冊 Kerberos Connections 的服務主體名稱

  • 委派:使用 委派 來識別影響服務帳戶委派設定的任何問題。 這在針對連結的伺服器問題進行疑難解答時特別有用。 例如,如果SPN簽出沒問題,但您仍然遇到影響鏈接伺服器查詢的問題,這可能表示服務帳戶未設定為委派認證。 如需詳細資訊,請參閱《在線叢書》主題: 設定委派的連結伺服器

    [委派] 索引標籤的螢幕快照。

解譯及處理來自 Kerberos Configuration Manager 的診斷

參考 [ 狀態 ] 數據行,以檢閱工具的診斷。 根據狀態,遵循適當的步驟來解決問題。

  • 狀態 - 良好

    詳細資訊:已正確設定已核取的專案。 移至輸出中的下一個專案。

    動作:不需要採取任何動作。

  • 狀態 - 遺漏必要的SPN

    詳細資訊:如果 Active Directory 中 SQL Server 啟動帳戶遺漏 [必要 SPN] 資料行中提及的服務主體名稱 (SPN) ,就會報告此狀態。

    動作:請遵循下列步驟來檢查 SPN 問題是否已解決:

    1. 取 [修正 ] 以檢閱 [ 警告 ] 對話框中的資訊。
    2. 選取 [是 ] 將遺漏的 SPN 新增至 Active Directory。
    3. 如果您的網域帳戶具有更新 Active Directory 的必要許可權,則必要的 SPN 將會新增至 Active Directory。
    4. 如果您的網域帳戶沒有更新 Active Directory 的必要許可權,請使用 [產生 ] 或 [ 全部產生 ] 來產生腳本,以協助 Active Directory 系統管理員新增遺漏的 SPN。
    5. 新增SPN之後,再次執行 Kerberos Configuration Manager,以確認SPN問題已解決。
  • 狀態 - 必須啟用 TCP 才能使用 Kerberos 設定。

    詳細資訊:如果客戶端計算機上未啟用 TCP,就會顯示此狀態。

    動作:請遵循下列步驟來啟用 SQL Server 實例的 TCP/IP 通訊協定:

    1. [SQL Server 組態管理員 - 控制台] 中,展開 [SQL Server 網络設定]

    2. 主控台中,選取的 [通訊 協定 ] <instance name>

    3. 在 [ 詳細數據] 中,選取 [TCP/IP] ,然後選取 [ 啟用]

    4. [控制台] 中,選取 [SQL Server 服務]

    5. [詳細數據] 中,選取 SQL Server<instance name>

    6. 取 [重新啟動] 以停止並重新啟動 SQL Server 服務。 如需詳細資訊,請參閱 啟用或停用伺服器網路協定一節

  • 狀態 - 動態埠

    詳細資訊:使用動態埠 (預設組態) 的具名實例會顯示此狀態。 在需要使用 Kerberos 連線到 SQL Server 的環境中,您應該將具名實例設定為使用靜態埠,並在註冊 SPN 時使用該埠。 否則,下次具名實例開始接聽 SPN 所註冊埠以外的新埠時,在 Active Directory 中註冊的 SPN 將會變成無效。

    注意事項

    此建議僅適用於相依於手動 SPN 註冊的環境。

    動作:請遵循下列步驟,將 SQL Server 實例設定為使用靜態埠:

    1. [SQL Server 組態管理員 - 控制台] 中,展開 [SQL Server 網络組態],展開 的 [通訊協定<instance name>],然後按兩下 [TCP/IP]
    2. [TCP/IP 屬性] 中,選取 [通訊協定中的全部接聽]
    3. 如果 [ 全部接聽] 設定為 [ 是],請切換至 [IP 位址],然後捲動到視窗底部以尋找 [IPAll] 設定。
    4. 刪除 TCP 動態埠中的目前值,並在 TCP 連接埠中輸入埠號碼。
    5. 選取 [確定],然後重新啟動 SQL Server 實例。 如需詳細資訊,請參閱設定伺服器接聽特定 TCP 連接埠
    6. 如果 [ 全部接聽] 設定為 [否],請切換至 [IP 位址],然後檢查出現在IP1和IP2節點中的每個IP位址。 針對設定為 [ 已啟用] 的位址,移除 TCP 動態埠中的目前值,然後在 TCP 連接埠中設定值。
    7. 選取 [確定],然後重新啟動 SQL Server 實例,讓設定生效。 如需詳細資訊,請參閱設定伺服器接聽特定 TCP 連接埠
  • 狀態 - 重複的SPN

    詳細資訊:如果相同的SPN在Active Directory中的不同帳戶下註冊,您可能會遇到這種情況。

    動作:請遵循下列步驟,將SPN新增至Active Directory:

    1. 取 [修正]

    2. 檢查 [ 警告 ] 對話框中的資訊。

    3. 選取 [是 ] 將遺漏的 SPN 新增至 Active Directory。

      • 如果您的網域帳戶具有更新 Active Directory 的必要許可權,將會刪除不正確的 SPN。

      • 如果您的網域帳戶沒有更新 Active Directory 的必要許可權,請使用 [產生 ] 或 [ 全部產生 ] 來產生您可提供給 Active Directory 系統管理員的必要腳本,以移除重複的 SPN。

    4. 拿掉 SPN 之後,請重新執行 Kerberos Configuration Manager,以確認 SPN 問題已解決。

    注意事項

    當 SQL Server Database Engine 的實例啟動時,SQL Server 會嘗試註冊 SQL Server 服務的 SPN。 當實例停止時,SQL Server 嘗試取消註冊 SPN。 若要發生這種情況,SQL Server 服務帳戶需要 Active Directory 中的適當許可權。 但是,如果服務帳戶沒有這些許可權,則不會進行自動 SPN 註冊,而且您必須與 Active Directory 系統管理員合作來註冊這些 SPN,以便 SQL 實例可以啟用 Kerberos 驗證。 如需詳細資訊,請參閱註冊 Kerberos Connections 的服務主體名稱

    注意事項

    在 SQL 叢集化的環境中,不建議自動註冊 SPN,因為取消註冊 SPN 和在 Active Directory 中重新註冊 SPN 可能需要比 SQL Server 上線所需的時間還多。 如果SPN註冊未及時發生,這可能會導致SQL Server 無法連線,因為叢集管理員無法連線到 SQL Server實例。

其他選項

若要從命令列產生 SPN 清單:

  1. 移至命令行。

    注意事項

    若要針對影響 SSRS 的連線問題進行疑難解答,請開啟系統管理命令提示字元視窗。

  2. 切換至包含 KerberosConfigMgr.exe的資料夾。

  3. 輸入 KerberosConfigMgr.exe -q -l

  4. 如需更多命令列選項,請輸入 KerberosConfigMgr.exe -h

若要儲存伺服器的 Kerberos 設定資訊:

  1. 聯機到目標 Windows 伺服器。
  2. 選取 [儲存]
  3. 指定您要儲存盤案的位置。 它可以位於本機磁碟驅動器或網路共用上。 檔案將會以 .xml 格式儲存。

若要從儲存的檔案檢視伺服器的 Kerberos 組態資訊:

  1. 選取 [載入]
  2. 開啟 Kerberos Configuration Manager 所產生的 XML 檔案。

若要檢視此工具的記錄檔:

根據預設,每次應用程式在應用程式數據資料資料夾中執行時,都會產生一個記錄檔: %APPDATA%\Microsoft\KerberosConfigMgr

若要取得協助,請使用下列任何方法:

  • 將滑鼠指標停留在命令上方,以產生工具提示。
  • KerberosConfigMgr.exe -h 命令提示字元執行 。
  • 選取工具列上的 [ 說明 ] 按鈕。

另請參閱