標籤:
轉自:http://www.cnblogs.com/zerocc/p/3425431.html
昨天在測試一些許可權今天早上來就發現SQL SERVER 登陸不上去,報錯為: 使用者登陸失敗:訊息 18456,層級 14,狀態 1,伺服器 XXX,第 1 行 . 使用者 ‘XXX‘ 登入失敗。我的服務和代理都是自動啟動的,所以問題不在這了,由於是本地服務,也沒有多個帳戶,測試的時候Sa也被自己禁用了。有的使用者就是部分庫的唯讀許可權,怎麼辦呢?
方法就是:把 sql 啟動到單一使用者模式,然後用 sqlcmd -A 登入,前提是你需要有電腦的管理員權限。網上有很多方法是一樣的,但是對於單一使用者模式的說明都不太詳細,至少對於像我這種小白來講還是有一定的理解問題,所以寫一下以便於像我一樣誤操作導致的同學進行學習。
啟用本地帳戶:
1.先看一下原生帳戶是否具有管理員的許可權,如果沒有添加上。
2.在開始菜單的搜尋方塊中輸入 cmd , 按右鍵選擇以管理員身份運行
3.在命令提示字元輸入 NET STOP MSSQLSERVRE 停止MSSQLSERVER運行(若已經停止則可以跳過此步驟)
4.若3有問題,提示報錯,則可以在開始 -->SQL SERVER --> 組態工具 -->SQL SERVER 組態管理員 --> 開啟SQL SERVER屬性-->進階 --> 啟動參數裡面加上 -m
加參數的時候注意一下,一定要加在啟動參數的最後面並且加上分號,以便於之前的相隔開來。如: -dD:\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lD:\DATA\mastlog.ldf ;-m
5.若以上均無問題,則切換到安裝路徑,即Binn下sqlservr.exe的路徑
如:cd C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn
6.執行 sqlservr.exe,即單一使用者模式進入了
7.再以系統管理員帳戶重新登陸開啟一個視窗,輸入SQLCMD -A
8.輸入你要更改的操作命令即可,在此處我需要的是把本機帳戶添加 , 如:
USE masterGOCREATE LOGIN [domain\username] FROM WINDOWS WITH DEFAULT_DATABASE=[Master]GOEXEC sp_addsrvrolemember @loginame=N‘domain\username‘, @rolename=N‘sysadmin‘GO
為了避免錯誤,可以再加一個SQL的帳戶以備不時之需, 也可以把sa命令啟用 :
-- 添加使用者T1並給予管理員的許可權USE [master]GOCREATE LOGIN [T1] WITH PASSWORD=N‘[email protected]‘, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFFGOEXEC master..sp_addsrvrolemember @loginame = N‘T1‘, @rolename = N‘sysadmin‘GO-- 啟用SAALTER LOGIN [sa] ENABLEGO
9.以上操作完成之後關閉2個命令列視窗,啟動sqlserver,即可以登陸。
註: 此環境為win7 + sql server 2008 其它環境沒有嘗試,僅作參考
SQL SERVER 2008 登陸失敗(SQL和windows都沒有對應的許可權)