SQL Server - 註冊服務主體名稱而不重新啟動服務?
我有一個沒有註冊 SPN 的實時 SQL Server 2012 環境 - 這以前不是問題,因為不需要 Kerberos 身份驗證。但現在它是必需的。
我已經正確配置了所有內容,但是在進行了這些更改之後,我想確保 SQL Server 可以成功註冊 SPN——最好不要重新啟動服務,因為這是一個實時環境。
有沒有辦法做到這一點?
PS 我知道我可以手動註冊 SPN,但我想確保它們可以自動註冊。
快速回答
問題:
我已經正確配置了所有內容,但是在進行了這些更改之後,我想確保 SQL Server 可以成功註冊 SPN——最好不要重新啟動服務,因為這是一個實時環境。
有沒有辦法做到這一點?
回答:
不。
解釋
來自官方文件Register a Service Principal Name for Kerberos Connections
服務主體名稱 (SPN) 必須註冊到 Active Directory,它在 Windows 域中擔任密鑰分發中心的角色。SPN 在註冊後會映射到啟動 SQL Server 實例服務的 Windows 帳戶。如果 SPN 註冊未執行或失敗,則 Windows 安全層無法確定與 SPN 關聯的帳戶,並且不會使用 Kerberos 身份驗證。
和
如果伺服器無法自動註冊 SPN,則必須手動註冊 SPN。請參閱手動 SPN 註冊。
在“自動 SPN 註冊”部分的下方,您可以找到
**當 SQL Server 數據庫引擎的實例啟動時,SQL Server 會嘗試為 SQL Server 服務註冊 SPN。**當實例停止時,SQL Server 會嘗試註銷 SPN。對於 TCP/IP 連接,SPN 以 MSSQLSvc/: 格式註冊。命名實例和預設實例都註冊為 MSSQLSvc,依靠值來區分實例。
概括
SQL Server 服務本質上是在服務啟動時自動註冊 SPN。如果您無法啟動 SQL Server 服務,則必須手動執行此任務。
注意事項
確保允許啟動 SQL Server 服務的服務帳戶讀取和寫入 SPN。
為此,您必須為 Active Directory 目錄服務中的 SQL Server 服務帳戶授予以下訪問控制設置:
- 讀取 servicePrincipalName
- 寫 servicePrincipalName
參考: 如何在 SQL Server 中使用 Kerberos 身份驗證(Microsoft 支持)