恢復 SA 密碼 - PSTools - 不工作
我在一家新公司,我看到的第一件事是他們甚至不知道他們有多少實例。他們沒有密碼,老 DBA 也不知道他在做什麼。
長話短說,我可以設法在幾乎每台伺服器上創建自己的系統管理員帳戶(我會將所有數據庫移動到只有 1 或 2 個實例),但有些是我做不到的。
在mssqltips的此連結中,有一個名為PsExec的工具。按照教程,我可以執行程序並使用
NT AUTHORITY\SYSTEM
. 但它不起作用。NT AUTHORITY\SYSTEM
是Public
,我無法使用 sysadmin 添加我的帳戶。該程序是否僅與 SQL 2008 一起執行?沒有辦法停止伺服器,因為我們的數據庫在巴西各地執行。
這裡的文章無數,但幾乎每個人都需要重新啟動 SQL Server。
當沒有系統管理員帳戶存在時,如何在 SQL Server 2008 中將系統管理員添加到使用者(這個是關於該程序的,但正如我所說,它對我不起作用(他正在使用 2008))。
在這個影片中,他正在使用這種
-M
方法。有人已經在 SQL Server 2014 上測試過嗎?我想知道,我會嘗試的。我可以與
NT AUTHORITY\SYSTEM
使用者連接,但是當我嘗試創建系統管理員登錄名或更改 sa 密碼時,它說我無權這樣做。然後,看看 nt 權利,它是公開的。我可以在我的機器上使用技巧更改 sa 登錄-m
,但我想要一些不需要關閉 SQL 的東西。
這是一篇包含詳細步驟的技術網文章。
簡而言之,您需要以單使用者模式啟動 SQL Server 並使用 sqlcmd 連接以添加您的帳戶。只要您在作業系統級別擁有管理員權限,這應該可以滿足您的需求。
需要注意的是,如果 sqlagent 配置為自動啟動,您應該在以單使用者模式啟動 SQL Server 之前禁用它,這樣 sqlagent 就不會進行連接。
據我所知,如果沒有 SQL Server 的停機時間,就沒有辦法做到這一點。如果伺服器上沒有已知的系統管理員使用者,您必須將其關閉至少幾分鐘。
(我相信
psexec
問題正文中提到的方法適用於舊版本的 SQL Server,但正如 OP 所發現的那樣,至少在 SQL Server 2014 中,甚至NT AUTHORITY\SYSTEM
不是系統管理員。)如果
-m
您在正文中提到的方法(確實需要重新啟動 SQL 伺服器)對您有用,那麼@Aaron連結的 technet 文章可能正是您所需要的。但是,如果未啟用混合模式身份驗證,您將遇到麻煩 - 如果未啟用,SQL Sever 將拒絕對您剛剛創建的 SQL 登錄進行身份驗證。以下方法將授予 Windows 使用者在 SQL Server 上的 sysadmin 權限,這將允許您在關閉混合模式身份驗證的情況下進行連接。它剛剛在 SQL Server 2014 上為我工作。與 technet 上提到的方法一樣,它確實需要本地管理員訪問 Windows 伺服器。
- 啟動 SQL Server 配置管理器
如果在我的情況下搜尋“開始”菜單沒有找到它,您可以直接啟動 MSC 文件:
- SQL Server 2016:
C:\Windows\SysWOW64\SQLServerManager13.msc
- SQL Server 2014:
C:\Windows\SysWOW64\SQLServerManager12.msc
- SQL Server 2012:
C:\Windows\SysWOW64\SQLServerManager11.msc
- SQL Server 2008:
C:\Windows\SysWOW64\SQLServerManager10.msc
- 點擊“SQL Server 服務”,然後停止“SQL Server (MSSQLSERVER)”服務。
請注意,“SQL Server (MSSQLSERVER)”是預設實例的名稱。如果您嘗試恢復命名實例,則該實例名稱將位於括號中。
另請注意,您可能還需要停止報告和集成服務(對於每個實例),因為我們即將將 SQL Server 置於單使用者模式,如果這些服務在您之前成功地重新連接到伺服器,您會收到一條錯誤消息,例如
Login failed for user ‘[user]’. Reason: Server is in single user mode. Only one administrator can connect at this time. (Microsoft SQL Server, Error: 18461).
3. 將 SQL Server 置於單使用者模式
- 右鍵點擊“SQL Server (MSSQLSERVER)”服務並選擇“屬性”
- 選擇“啟動參數”選項卡並添加一個
-m
標誌,指示伺服器以單使用者模式啟動- 點擊確定
- 啟動 SQL Server(但不啟動報告和集成服務)
- 執行
sqlcmd
,然後鍵入以下命令以在 SQL Server 實例上將 Windows 帳戶添加為系統管理員:USE master GO CREATE LOGIN [domainname\username] FROM WINDOWS GO sp_addsrvrolemember [domainname\username],'sysadmin' GO
請注意,如果您希望將本地使用者添加為系統管理員,而不是域使用者,請使用電腦名稱而不是
domainname
上面的名稱。 6. 退出sqlcmd
,再次停止 SQL Server,-m
從啟動參數中刪除標誌,然後啟動 SQL Server 7. 使用 SSMS 連接