Share via


SQL Server 2012:密碼緊急狀況

如果發生難以預料的事,而您忘了 SQL Server 密碼,還是有辦法可以回到系統中。

Saleem Hakani

你是一份自豪和受信任的 DBA 在您的組織。 您負責維護和更新您的生產環境中運行 SQL 伺服器上的幾個重要服務。 您已經決定將執行以下步驟 — — 這是一種任何固體的 DBA 將採取的最佳做法 — — 以確保您的公司從任何未經授權的訪問的 SQL 伺服器:

  • 您已經從 SQL Server 登入刪除任何及所有的內置管理員帳戶。
  • 您已經刪除 (除系統管理員或 SA) 是 SYSADMIN 伺服器角色 (包括任何 Windows 帳戶和 SQL Server 登入名) 的一部分的所有使用者。
  • 您已將 SA 帳戶密碼設置為極其複雜,這將是難以令人猜測或記住的東西。
  • 對於 SQL Server 上的日常操作,您可以使用您的域使用者帳戶,已對使用者資料庫的資料庫擁有者 (DBO) 許可權,但不會在系統上具有系統管理員特權。
  • 沒有記錄任何地方的 SA 密碼防止其他人知道它。 畢竟它不是一個好的做法,以記錄密碼。

因為您已經設置的 SA 密碼如此複雜 — — 與您一直使用您的域帳戶而不是 SA 帳戶為所有您日常與資料庫相關的 SQL 伺服器的活動 — — 意想不到的事發生了。 您忘記了您的 SQL 伺服器的 SA 密碼。

你是唯一的人知道您的團隊中的 SA 密碼。 現在您不記得它是什麼,您需要對您生產 SQL Server 框進行一些伺服器級別的配置更改。 你打算現在做什麼? 以下是一些選項:

  • 請嘗試以 SA 登錄與所有可能的密碼,你有你的頭腦中。
  • 查找您的電腦硬碟上或電子郵件 (您可能保存了它在一些檔中,這是不好的做法,但可以説明) 中的 SA 密碼。
  • 嘗試還原 Master 資料庫從資料庫備份。 這不會在長期説明,因為你仍會遇到同樣的問題,如果您不記得的 SA 密碼。
  • 重新生成主資料庫。 這是只稍有説明的因為您將丟失所有系統級和伺服器級配置和設置包括登錄、 許可權和伺服器級別的任何物件。
  • 重新安裝 SQL 伺服器 2012年和附加所有使用者資料庫。 這可能不工作,因為您可能會遇到同樣的問題,你會經歷與重建主資料庫。

假定所有您嘗試登錄到使用 SA 密碼的系統都已失敗。 現在是時候為你呼籲增援部隊:Microsoft 產品支援服務團隊。 這裡是他們可能會告訴你要做什麼:

這是後門向 SQL 伺服器 2012 將説明您獲得您的 SQL 伺服器生產 SYSADMIN 進入。 然而,這意味著您的 Windows 帳戶必須是在 SQL 伺服器 2012年服務正在運行的 Windows 伺服器上的本地管理員組的成員。

SQL Server 允許連接到 SQL Server 具有系統管理員許可權的本地管理員組的任何成員。

在這裡是要採取控制您 SQL 伺服器 2012 年作為一個 SA 的步驟:

1. 啟動 SQL 伺服器 2012年實例使用單使用者模式下從命令提示符啟動命令提示符以管理員的身份。 您還可以啟動 SQL 伺服器 2012 使用最少的配置,還將 SQL Server 在單使用者模式下。
2. 從命令提示符 (以管理員身份運行),請鍵入:SQLServr.Exe –m (或 SQLServr.exe –f) 和啟動 SQL 伺服器 2012年資料庫引擎。 請確保您沒有關閉此命令提示視窗。 您可以在您的環境路徑的 Binn 資料夾中查找 SQLServr.exe。 如果你沒有一個 SQL 伺服器 2012 Binn 資料夾在您環境的路徑中,總是可以導航到您的 SQL 伺服器 2012年機器的 Binn 資料夾。 通常的 Binn 資料夾位於 C:\Program Files\Microsoft SQL Server\MSSQL11。MSSQLSERVER\MSSQL\Binn >。
3. 一次 SQL 伺服器 2012 服務已開始在單使用者模式下或最小配置,您現在可以打開另一個命令列視窗以管理員的身份和使用的 SQLCMD 命令,從命令提示符來連接到 SQL 伺服器 2012年實例:

SQLCMD –S <Server_Name\Instance_Name> Example: SQLCMD –S "SALEEMHAKANI"

  你將現在登錄到 SQL Server。 請記住,您在 SALEEMHAKANI SQL 伺服器 2012年實例上的管理員身份登錄的。
4. 一旦您正在登錄到 SQL 伺服器 2012 從命令提示符處使用 SQLCMD,您可以創建一個新的帳戶和任何伺服器級別許可權授予它的選擇。 在 SQL 伺服器 2012 稱為"Saleem_SQL"中創建新的登錄名,然後將此帳戶添加到 SA 伺服器角色。 若要創建從命令提示符執行步驟 3 之後的新的登錄名,使用以下方法:

1> CREATE LOGIN '<Login_Name>' with PASSWORD='<Password>' 2> GO

  下面是一個示例:

1> CREATE LOGIN SQL_SALEEM WITH PASSWORD='$@L649$@m' 2> GO

  一旦您已經創建了新的登錄"SQL_SALEEM",添加此登錄到 SQL 伺服器 2012年實例上的 SA 伺服器角色。 從相同的命令提示視窗中,執行以下語句:

1> SP_ADDSRVROLEMEMBER '<Login_Name>','SYSADMIN' 2>go

  要向 SYSADMIN 伺服器角色添加現有的登錄,請執行以下語句:

1> SP_ADDSRVROLEMEMBER '<LOGIN_NAME>','SYSADMIN' 2> GO

  下面是一個示例:

1> SP_ADDSRVROLEMEMBER SQL_SALEEM,'SYSADMIN' 2> GO

  以前的操作會照顧授予的"SQL_SALEEM"登錄系統管理員許可權。
5. 一旦你成功地執行了這些步驟下, 一步是停止和啟動 SQL Server 服務使用定期啟動選項。 這一次您不需要 –f 或 –m。
6. 登錄到 SQL 伺服器 2012年管理工作室。 您還可以從命令提示符下使用的"SQL_SALEEM"帳戶和其各自的密碼登錄。 您現在可以 SA 訪問您的 SQL 伺服器 2012年實例。 你現在可能重置的 SA 密碼,並採取你生產的控制 SQL Server 框。

這是很正常的事,不時忘記了密碼,但這並不意味著它是較少的麻煩。 這些緊急措施應得到您啟動和運行無太多置亂或停機時間。

Saleem Hakani

Saleem Hakani 是具有 18 年以上在微軟的主要設計師。 他自 1992 年以來曾與 SQL Server,並一直在眾多大型 Microsoft 服務工程師和建築師作為過去七年,包括 Hotmail、 Bing 和 MSN。 Hakani 為 Microsoft 員工,導致世界各地的 SQL Server 社區,為各種 Microsoft 事件包括 TechReady、 SQLFEST、 SQL 學校和 SQLPASS 技術簡報者。

相關的內容