標籤:
原文: 無法使用SQL login去登陸SQL Server - 'Password did not match'
出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/02/01/sql-login-sql-server-password-did-not-match.aspx
問題描述: 在某一台機器上的management studio,始終無法使用SQL login去登陸SQL Server。但是如果在其他的機器上,使用同樣的SQL login是可以登陸SQL Server的。
錯誤資訊:‘Password did not match ‘
診斷步驟:
1. 在這台機器上使用SQLCMD串連SQL Server,用同樣的SQL login 登陸,是否可以成功?
2. 建立一個新的SQL login 但是使用空密碼。然後在出問題的機器上使用新建立的SQL login以及空密碼登陸SQL Server,是否可以成功?
如果1和2都可以成功,基本上我們就可以確定問題是由於management studio工具對傳過去的密碼加密失敗導致的了。
Management studio工具把我們在介面上輸入的密碼傳到SQL Server之前,是需要首先做加密的。這個加密的密碼存在什麼地方呢?
我們可以在run中運行%appdata%這個環境變數來檢查路徑。通常這個路徑設定為的是%USERPROFILE%\AppData\Roaming。在這個路徑下面,繼續找到microsoft\protect 目錄。
所有加密的cache就存放這個目錄下面了。
接下來我們看導致這個問題的幾個原因:
1. 可以嘗試清空protect目錄下所有的檔案和檔案夾,然後重試。
2. 直接運行%appdata%報錯,無法開啟指定的路徑,這種情況通常是對%appdata%指向的路徑沒有許可權,或者%appdata%指向路徑是錯誤的。%appdata%是儲存在如下註冊表鍵值中的,我們可以通過訪問註冊表來確認這個路徑是否有效:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData.
3. 對於註冊表鍵值HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData.沒有存取權限。這個也很容易通過訪問註冊表鍵值來確認。
只要我們目前使用者確認對註冊表鍵值有訪問的許可權,註冊表鍵值中所儲存的路徑有效,目前使用者對註冊表鍵值所儲存的路徑有訪問和寫入權限,這個問題就可以解決了。
有時候我們會發現這個目錄下的Microsoft子目錄下找不到protect檔案夾,只要上述三個前提檢查,修改並確保滿足以後,這個protect目錄在management studio使用加密的時候會自動建立,所以protect檔案夾不存在並不是問題的原因。
無法使用SQL login去登陸SQL Server - 'Password did not match'