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


 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章