共用方式為


適用於 SQL Server 的 Kerberos Configuration Manager 概觀

適用於:SQL Server

原始 KB 編號: 2985455

網路中不正確的 Kerberos 設定可能會導致MICROSOFT SQL Server 中的各種連線錯誤。 適用於 SQL Server 的 Kerberos Configuration Manager 是一種診斷工具,可協助您針對影響 SQL Server、SQL Server Reporting Services (SSRS) 和 SQL Server Analysis Services (SSAS) 的 Kerberos 相關連線問題進行疑難解答。 本文提供如何使用 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:

Microsoft適用於 SQL Server 的 Kerberos Configuration Manager

注意

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

權限

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

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

使用此工具

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

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

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

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

    注意

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

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

    注意

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

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

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

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

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

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

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

    1. 選取產生
    2. 在開啟的對話框中,提供名稱(在此案例中為 “generateSPNs”),將 [另存新檔] 設定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 在 SQL Server 的服務帳戶下建立 SPN。

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

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

    注意

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

  • 委派:使用委派來識別任何影響服務帳戶設定委派的問題。 這對於針對連結的伺服器問題進行疑難解答特別有用。 例如,如果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. 在 [詳細數據] 中,針對 <instance name>選取 [SQL Server]。

    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 位址。 針對設定為 Enabled 的位址,請移除 TCP 動態埠中的目前值,然後在 TCP 連接埠設定值。
    7. 選取 [ 確定],然後重新啟動 SQL Server 實例,讓設定生效。 如需詳細資訊,請參閱設定伺服器接聽特定 TCP 連接埠
  • 狀態 - 重複的SPN

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

    動作:請遵循下列步驟,將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 資料庫引擎的執行個體啟動時,SQL Server 會嘗試註冊 SQL Server 服務的 SPN。 當此執行個體停止時,SQL Server 會嘗試取消註冊 SPN。 若要發生這種情況,SQL Server 服務帳戶需要 Active Directory 中的適當許可權。 但是,如果服務帳戶沒有這些許可權,則不會發生自動 SPN 註冊,而且您必須與 Active Directory 系統管理員合作來註冊這些 SPN,讓 SQL 實例可以啟用 Kerberos 驗證。 如需詳細資訊,請參閱 註冊 Kerberos 連接的服務主體名稱

    注意

    在叢集 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
  • 選取工具列上的 [ 說明] 按鈕。

另請參閱