原文:
無法使用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檔案夾不存在并不是問題的原因。