iT邦幫忙

DAY 11
7

SQL Server 無敵手冊系列 第 11

SQL Server 無敵手冊第十一篇- 如何復原master資料庫

如果master資料庫損毀,會嚴重影響SQL Server的運作,因為在master資料庫中紀
錄著SQL Server重要的系統資訊。這篇文章將跟大家說明如何復原master資料庫。
關於master資料在SQL Server 無敵手冊第四篇中有跟大家介紹過,相信大家應該對master資料庫已經有初步的了解,master資料庫中紀錄著SQL Server的重要資系統資訊,包含伺服器系統組態、使用者登入帳戶、使用者的資料庫組態與檔案位置等等...。
大家都知道要將重要資料庫進行備份,資料庫損毀時就可以由備份中還原,但是如果master資料庫損毀,您的SQL Server可能根本就無法啟動,此時您就無法依照一般還原程序將master資料庫還原,您必須利用下列步驟來還原master資料庫:
1.利用SQL Server的安裝檔(Setup.exe)將master資料庫重建。(此步驟是要讓您的SQL Server可以先正常執行)
2.已[單一使用者模式]來啟動SQL Server的執行個體。
3.使用您的備份檔案將master還原到您需求的時間點。
這樣重起SQL Server後就可以將master回到備份時的狀態,知道了上列步驟後,接下來我們就真對[master資料庫重建]與[master資料庫復原]作更進一步的介紹。
[master資料庫重建]
重建master資料庫主要是要解決SQL Server因為master資料庫損毀而無法正常啟動的問題,在SQL Server 2008 中您必須使用命令模式執行Setup.exe來重建master資料庫,除了在安裝光碟中您也可以在下列預設安裝目錄找到Setup.exe:

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release

如下圖:

請利用下列語法在命令模式下執行Setup.exe:

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /SAPWD= Password

參數的說明如下:
/QUIET/Q:安裝程式的執行不使用任何使用者互動畫面。
/ACTION:指定Setup程式要執行的動作,REBUILDDATABASE是指定安裝程式要重新建立系統資料庫。
/INSTANCENAME:這是 SQL Server 執行個體的名稱。若為預設執行個體,請輸入 MSSQLSERVER。若為具名執行個體,請使用 server_name\instance_name 格式來輸入名稱。
/SQLSYSADMINACCOUNTS:指定要加入至 sysadmin 固定伺服器角色的 Windows 群組或個別帳戶。指定多個帳戶時,請以空格隔開這些帳戶。例如,您可以輸入 Administrator將本機的Administrator加入。
/SAPWD:指定 SQL Server 的sa 帳戶的密碼。如果執行個體使用混合驗證 (SQL Server 和 Windows 驗證) 模式,這就是必要的參數。
執行完成後,您可以透過下列記錄檔案來檢視是否順利完成:

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs\Summary.txt

重建後的master資料庫是一個全新的資料庫,萬一您的備份遺失或是太舊,您可以手動設定執行相關管理工作來回復相關設定。
[master資料庫復原]
復原master資料庫與復原其他資料庫不同,您必須先以[單一使用者模式]來執行SQL Server啟動執行個體,才能執行復原程序,復還步驟如下:
1.使用下列命令在命令模式執行SQL Server:

sqlservr.exe -m

執行畫面如下列紅色框框:

執行後看到下列訊息代表已經成功:

sqlservr.exe預設的位置在各執行個體的安裝目錄下的binn,預設目錄位置如下

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn

如下圖:

2.接著執行sqlcmd登入到SQL Server,並執行下列RESTORE DATABASE 陳述式。

USE MSDB
GO
RESTORE DATABASE master
FROM disk='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\master.bak'
GO

此範例是使用backup檔案來還原,執行結果如下圖:

復原後會將SQL Server關閉,請重新啟動SQL Server即可完成復原動作。

現在您已經知道如還在SQL Server中復原master資料庫。


上一篇
SQL Server 無敵手冊第十篇- 淺談SQL Server的復原選項
下一篇
SQL Server 無敵手冊第十二篇-設定SQL Server的自動化管理工作 (SQL Server Agent)
系列文
SQL Server 無敵手冊30
0
alexc
iT邦高手 1 級 ‧ 2009-10-12 15:55:38

公司用sql2000的
記得上次死掉時
不能用這樣的方法去惡搞
要用rebuildm

funkent iT邦高手 1 級‧ 2009-10-12 16:39:46 檢舉

Alexc大大講的沒錯,在SQL Server 2000的版本要使用rebuildm,不過因為我們在SQL Server 無敵手冊第二篇中有開宗明義說明在SQL Server 無敵手冊中,就以 SQL Server 2008 Enterprise (64 位元) x64 為主,所以就沒對SQL Server 2000的方法多作介紹囉!

0
funkent
iT邦高手 1 級 ‧ 2009-10-12 16:39:28

Alexc大大講的沒錯,在SQL Server 2000的版本要使用rebuildm,不過因為我們在SQL Server 無敵手冊第二篇中有開宗明義說明在SQL Server 無敵手冊中,就以 SQL Server 2008 Enterprise (64 位元) x64 為主,所以就沒對SQL Server 2000的方法多作介紹囉!

0
funkent
iT邦高手 1 級 ‧ 2009-10-12 16:40:36

補充說明:如果是SQL Server 2005的話,Setup.exe只能從安裝光碟執行。

0
funkent
iT邦高手 1 級 ‧ 2009-11-10 21:31:55

補上SQL Server 無敵手冊全系列的連結
SQL Server 無敵手冊

我要留言

立即登入留言