SQL SERVER 2008 登陸失敗(SQL和windows都沒有對應的許可權)

_cc發表於2013-11-15

      昨天在測試一些許可權今天早上來就發現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 其它環境沒有嘗試,僅作參考

 

相關文章