最近想重拾一下SQL技術,可是發現我工作機裡的SQL不好使,我個人賬戶沒有權限創建新的DB,很是郁悶,想了好久可能是我用另外一個admin賬戶安裝的,恰巧密碼也想不到了。sa的賬戶也無法使用,可能在安裝時只設置了windows驗證,沒有設置成混合模式。唉,真是太悲催了。這個案例也許不很常見,可是讓我遇到了,現在的處境是卸也卸載不了,使用也沒法正常使用。我做了幾步嘗試,覺得值得把它們記錄下來:
如何確定身份驗證模式
如果不能確定如何驗證 MSDE 安裝的身份驗證模式,可以查看相應的注冊表項。默認情況下,對於 Windows 身份驗證,Windows LoginMode 注冊表子項的值設置為 1。如果啟用了混合模式身份驗證,則此值為 2。
•LoginMode 子項的位置取決於您是將 MSDE 作為默認 MSDE 實例安裝還是作為命名實例安裝。如果 MSDE 是作為默認實例安裝的,則 LoginMode 子項位於以下注冊表子項中:
HKLM\Software\Microsoft\MSSqlserver\MSSqlServer\LoginMode
• 如果 MSDE 是作為命名實例安裝的,則 LoginMode 子項位於以下注冊表子項中:
HKLM\Software\Microsoft\Microsoft SQL Server\%InstanceName%\MSSQLServer\LoginMode
經過查看我的機器注冊表項值被設置成了1,說明只有Windows身份驗證模式,sa模式沒有啟動。
查看已經存在的admin賬戶
select * from master.dbo.syslogins
經過這個檢查我的賬戶信息沒有在表裡,只有sa賬戶,且密碼值顯示為NULL。但是經過嘗試sa賬戶還是無法登陸。後來事實證明,我當前賬戶執行這個語句是沒有權限看到所有的admin信息的,當我擁有admin權限時看到的列表項才是正確的。
進一步驗證SA 密碼是否為空
1. 在正在連接到的 MSDE 實例的宿主計算機中,打開命令提示符窗口。
2. 在命令提示符處鍵入以下命令,然後按 Enter 鍵: osql -U sa
這樣可以通過 sa 帳戶連接到 MSDE 的本地默認實例。要連接到您的計算機上安裝的命名實例,請鍵入: osql -U sa -S servername\instancename
隨即將出現以下提示:Password:
3.再次按 Enter 鍵。此操作將為 sa 傳遞一個 NULL(空)密碼。
如果按 Enter 鍵後出現以下提示,則您對 sa 帳戶沒有密碼:1>
如果出現錯誤信息,可根據錯誤信息進一步盤查。
如何更改身份驗證模式
注意:切換身份驗證模式之前,必須設置 sa 密碼,以免暴露潛在的安全漏洞。
要從混合模式切換到集成 (Windows) 身份驗證模式,請按以下步驟操作:
1.要停止 MSSQLSERVER 以及所有其他相關服務(如 SQLSERVERAgent),請在“控制面板”中打開服務程序。
2.打開注冊表編輯器。要打開注冊表編輯器,請依次單擊開始和運行,然後鍵入:“regedt32”單擊確定。
3.找到以下兩個子項之一(取決於 MSDE 是作為默認 MSDE 實例安裝的還是作為命名實例安裝的):
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSqlserver\MSSqlServer – 或者 -
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\\MSSQLServer\
4.在右窗格中,雙擊 LoginMode 子項。
5.在 DWORD 編輯器對話框中,將此子項的值設置為 1。確保選擇了 Hex 選項,然後單擊確定。
6.重新啟動 MSSQLSERVER 和 SQLSERVERAgent 服務以使更改生效。
在我這裡,更改完成後服務始終啟不來,看來還是權限問題或是安裝的問題,還是提醒大家在安裝的時候一定要選擇正確,否則還真麻煩。還有人說vs會自帶一個sql服務,他們之間不能互相妥協,一般安裝順序應該是先裝sqlserver再裝vs,或者把vs的數據庫模塊卸載了再手動啟動sqlserver的服務。我的機器上的確也安裝了vs。
最後這個問題的處理結果就是我在user accounts裡修改了我原來所用admin的密碼,原來這個是可以的,然後用這個admin登陸加上了我現在用的admin的sysadmin權限,現在可以建數據庫了。說明一下我是win7操作系統,也許2K8操作系統就真的悲催了。還是卸載重新安裝一回吧。