恢復損壞的master數據庫
2024-07-21 02:32:04
供稿:網友
遇到損壞或者錯誤的master數據庫是最難解決情況之一。Master數據庫包含了SQL Server需要的關鍵信息。如果master數據庫出錯,那么SQL Server就不能啟動。要在這種情況下還原master數據庫,可以按照下面這些步驟來從災難中恢復過來:
1. 使用/PRogram Files/Microsoft SQL Server/80/Tools/Binn目錄下的rebuidm.exe文件重建master數據庫。重建master數據庫可以使你的數據庫文件完整無缺。為以防萬一,經常把數據和日志文件備份到一個單獨的目錄是個不錯的主意。
2. 使用-m參數啟動SQL Server,這樣可以以單用戶模式重新啟動SQL Server。
3. 從最近一次已知最好的備份來還原master數據庫。
4. 核實master數據庫是不是已經成功還原:確認所有數據庫都已恢復正常運行。從最近一次已知最好的備份來還原msdb數據庫。
5. 以普通模式停止和啟動SQL Server。
6. 向生產用戶開放數據庫。
如果這樣做沒有效,那么重建master數據庫然后附加這個數據庫。這也是DBA的任務之一,當然你并不希望經常這樣做。如果master數據庫出現問題,那么服務器上所有的數據庫都會出現問題。
總的來說,恢復時要完成的第一個步驟就是安裝一個新的master數據庫,使服務器至少能夠啟動。在此基礎上,就可以還原真正的master數據庫了。雙擊了rebuildm.exe之后,將啟動rebuild master實用程序,它需要三個參數:
① 要恢復的服務器名稱。
② Master數據庫在原來的安裝程序中的位置,如果SQL Server的版本為SP2,這個位置應當是安裝CD的x86/data目錄(在更早的版本中,由于存在程序錯誤,有可能需要將這個data目錄拷貝到硬盤驅動器或者網絡驅動器上)。
③ 服務器的排序規則。
這個重建過程將會重新創建全部四個系統數據庫以及Northwind和Pubs,接著對服務器進行配置。整個重建過程大約需要數分鐘,如果以前使用service pack對服務器進行了升級,將有可能花費更長時間。
恢復過程的第二個步驟是使用服務器管理或者企業管理器來啟動服務器。
依賴于你的安全性配置,企業管理器很有可能沒有連接到服務器的權限。重建master數據庫將會丟掉除了sa以外的所有用戶登錄,并把sa的空口令重置為空。如果要調整企業管理器的連接配置,以便作為sa以空口令連接到服務器,可以編輯SQL Server的注冊屬性。不要擔心sa的空口令,因為我們很快就會恢復真正的master數據庫。
一旦服務器再次運行,你就會發現所有的用戶數據庫都不見了,因為重建的master數據庫沒有包含有關這些用戶數據庫的信息。
恢復過程的第三個步驟就是將服務器置于單用戶模式,以便還原master數據庫。在企業管理器中,要完成以下步驟:
① 選擇服務器。
② 使用右鍵單擊它,并從彈出的快捷方式菜單中選擇“屬性”菜單項,打開“服務器屬性”對話框。
③ 單擊“啟動參數”按鈕。
④ 在“參數”文本框中輸入-m,然后按下“添加”按鈕。
⑤ 按下“確定”按鈕關閉“啟動參數”對話框,然后關閉“服務器屬性”對話框。
⑥ 關閉企業管理器。
警告:在SQL Server實例處于單用戶模式時,不要使用企業管理器。這樣做有可能會鎖定該實例,使它進入不能接受其他連接的狀態。
⑦ 使用SQL Server服務器管理器停止并重新啟動SQL Server實例。
恢復損壞的master數據庫的第四個步驟才是進行真正的還原。因為SQL Server現在處于單用戶模式,所以必須使用查詢分析器來完成這一步驟。如果試圖在企業管理器中還原master數據庫,將會產生嚴重的問題。在查詢分析器中進行還原時,需要執行下面的命令:
RESTORE DATABASE master
FROM
DISK=’systembackup’
WITH FILE=1
執行結果如下:
The master database has been successfully restored.
Shutting down SQL Server.
SQL Server is terminating this process.
關閉查詢分析器,并使用SQL Server的服務管理器重新啟動SQL Server實例。
還原master數據庫的最后一步是把在第三個步驟加入的-m啟動參數去掉,將SQL Server實例重新置于多用戶狀態。要修改這個啟動參數,可以使用企業管理器的“服務器屬性”對話框。
關閉企業管理器,使用SQL Server的服務管理器停止并重新啟動SQL Server實例。