SSMS 中輸入密碼的「密碼無效」錯誤和回應緩慢
本文說明使用 SQL Server 驗證在 SQL Server Management Studio (SSMS) 中的密碼輸入時所發生的問題。
原始產品版本:SQL Server
原始 KB 編號: 4038457
徵兆
假設您使用 SSMS 17.2(或舊版的程式)使用 SQL Server 驗證連線到任何版本的 SQL Server。 當您輸入密碼時,鍵盤上按下按鍵的密碼方塊的視覺回應明顯緩慢。 此外,即使輸入密碼正確,登入嘗試也會失敗,並顯示「無效密碼」錯誤訊息。
原因
發生此問題的原因是 Windows 資料保護 API 無法將 MasterKey 備份至網域的域控制器,其中包含用來啟動 SSMS 的 Windows 帳戶。
因應措施
若要解決這個問題:
- 使用 Windows 驗證,而不是 SQL 驗證。
- 使用本機帳戶登入 Windows,而不是網域帳戶。
- 當 RWDC 無法使用時,請遵循 DPAPI MasterKey 備份失敗中的一節中的步驟。
解決方法
若要修正此問題,請找出並解決防止備份 Windows 數據保護 API MasterKey 的問題。
其他相關資訊
下列步驟說明此案例中會發生什麼情況:
當您在 SSMS 的密碼方塊中輸入字元時, 會呼叫 CryptProtectData Windows 資料保護 API (DPAPI) 函式來加密密碼。
DPAPI 最初會產生稱為 MasterKey 的強密鑰(因為沒有要使用的有效 MasterKey),該密鑰會受到使用者的登入認證保護,並叫用備份程式。
當此程式失敗時(因為使用者網域沒有可存取的可寫入域控制器 (DC),就會產生錯誤並擲回至 SSMS 應用程式。
在 SSMS 程式代碼中,會攔截此錯誤且未處理。 由於程式代碼未處理情況,因此不會向用戶顯示此錯誤。
這會導致傳送至 SQL Server 的密碼成為空字串。 當您遇到此問題時,有兩個徵兆:
輸入密碼方塊明顯緩慢,因為嘗試連線到可寫入的域控制器失敗。
即使輸入正確的密碼,SQL Server 也會在其錯誤記錄檔中報告無效的密碼。
基本上,您在無法使用 RWDC 時遇到 DPAPI MasterKey 備份失敗一文中所述的問題。 Microsoft已變更 17.3 和未來版本的 SSMS 程序代碼。 因此,如果遇到此問題,系統會報告從 DPAPI 擲回的例外狀況,以方便診斷。