Windows

重啟時多個域控制器和 SQL 登錄失敗

  • July 25, 2020

我有一個帶有 4 個域控制器的域 test.local。

我有一個 SQL Server,有時在重新啟動我的一個域控制器時出現以下錯誤:

說明:SSIS 錯誤程式碼 DTS_E_OLEDBERROR。發生 OLE DB 錯誤。錯誤程式碼:0x80004005。OLE DB 記錄可用。來源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“登錄失敗。登錄來自不受信任的域,不能用於 Windows 身份驗證。”。

為什麼其他 3 個 DC 上沒有進行身份驗證?當有多個域控制器時,通常會有負載平衡。

謝謝你的幫助

這就是我解決這個問題的方法。

首先,您需要檢查您的 SQL Server 實例是否在哪個身份驗證系統上執行。使用 Windows AD 使用者執行以下查詢:

select auth_scheme from sys.dm_exec_connections where session_id=@@spid

KERBEROS如果 SQL Server 正在使用 Kerberos 身份驗證,則在結果視窗的 auth_scheme 列中會出現一個列為“”的字元串。

如果身份驗證是NTLM,那麼您遇到了我遇到的問題。

因為如果你使用NTLM,每次你的客戶端嘗試連接到 SQL Server 時,它都會查詢 AD 詢問你是否被授權。

在 Kerberos 身份驗證中,有一個令牌系統。連接到 SQL 數據庫的客戶端將獲得一個有效期為 10 小時的唯一令牌(Windows 系統上的預設值)。然後就會過期。如果域控制器在令牌生命週期內不可用,您仍然可以連接到 SQL Server。

(確保以域管理員身份執行命令)。要配置 Kerberos,您需要像這樣添加 SPN:

SetSPN –A MSSQLSvc/<ComputerName>.<DomainName>:1433 <AccountName>

例如,如果我的 SQL Server 是使用服務帳戶 SqlSvcUsr 執行的 redmond.microsoft.com 域中的 Server1,則命令將是:

SetSPN –A MSSQLSvc/Server1.redmond.microsoft.com:1433 redmond\SqlSvcUsr 

如果你想添加一個特定的實例,那麼它將是:

SetSPN –A MSSQLSvc/Server1.redmond.microsoft.com:50203 redmond\SqlSvcUsr
SetSPN –A MSSQLSvc/Server1.redmond.microsoft.com:MyInstance redmond\SqlSvcUsr  

然後重新啟動您的 SQL Server 服務。並再次執行查詢:

select auth_scheme from sys.dm_exec_connections where session_id=@@spid

應該列出 Kerberos。

希望能幫助到你。

似乎知道問題

但我想知道這是否與您的 MSSQL 伺服器上的某些網路設置或連接設置(持久性?)有關。意味著當您重新啟動 DC 時,SQL 伺服器不知道並且 SQL 正在嘗試進行身份驗證,它會在身份驗證過程中切斷連接或破壞來自 DC 的響應。

這是 Microsoft 文件中的建議之一

與 SQL Server 建立連接時發生與網路相關或特定於實例的錯誤

(我知道它來自另一邊,但與連結的已知問題相關似乎與網路相關)

引用自:https://serverfault.com/questions/853164