分享方式:


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 數據保護 API MasterKey 的問題。

其他相關資訊

下列步驟說明此案例中會發生什麼情況:

  1. 當您在 SSMS 的密碼方塊中輸入字元時, 會呼叫 CryptProtectData Windows 資料保護 API (DPAPI) 函式來加密密碼。

  2. DPAPI 最初會產生稱為 MasterKey 的強密鑰(因為沒有要使用的有效 MasterKey),該密鑰會受到使用者的登入認證保護,並叫用備份程式。

  3. 當此程式失敗時(因為使用者網域沒有可存取的可寫入域控制器 (DC),就會產生錯誤並擲回至 SSMS 應用程式。

  4. 在 SSMS 程式代碼中,會攔截此錯誤且未處理。 由於程式代碼未處理情況,因此不會向用戶顯示此錯誤。

  5. 這會導致傳送至 SQL Server 的密碼成為空字串。 當您遇到此問題時,有兩個徵兆:

    • 輸入密碼方塊明顯緩慢,因為嘗試連線到可寫入的域控制器失敗。

    • 即使輸入正確的密碼,SQL Server 也會在其錯誤記錄檔中報告無效的密碼。

基本上,您在無法使用 RWDC 時遇到 DPAPI MasterKey 備份失敗一文中所述的問題。 Microsoft已變更 17.3 和未來版本的 SSMS 程序代碼。 因此,如果遇到此問題,系統會報告從 DPAPI 擲回的例外狀況,以方便診斷。

參考資料