昨天在測試一些許可權今天早上來就發現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 master GO CREATE LOGIN [domain\username] FROM WINDOWS WITH DEFAULT_DATABASE=[Master] GO EXEC sp_addsrvrolemember @loginame=N'domain\username', @rolename=N'sysadmin' GO
為了避免錯誤,可以再加一個SQL的帳戶以備不時之需, 也可以把sa命令啟用 :
-- 新增使用者T1並給予管理員的許可權 USE [master] GO CREATE LOGIN [T1] WITH PASSWORD=N'T1@123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO EXEC master..sp_addsrvrolemember @loginame = N'T1', @rolename = N'sysadmin' GO -- 啟用SA ALTER LOGIN [sa] ENABLE GO
9.以上操作完成之後關閉2個命令列視窗,啟動sqlserver,即可以登陸。
注: 此環境為win7 + sql server 2008 其它環境沒有嘗試,僅作參考