使用環境:
SQL Server 2008 R2 x64 位元版本
準備工作:
1. 確認已經有備份系統資料庫。
2. SQL Server 已經可以正常運作。
工作1:以「單一使用者模式」來啟動 SQL Server
若要還原系統資料庫:master,必須先以「單一使用者模式(single user mode)」來啟動 SQL Server。
步驟01. 停止 SQL Server 服務。
可以在「命令提示字元」視窗,執行以下的命令來停止 SQL Server 預設執行個體之服務。
net stop MSSQLSERVER /Y -- 若為具名執行個體,例如:I4,可以使用以下的範例: net stop mssql$I4 /Y
--P01
步驟02. 在「命令提示字元」視窗,執行以下的命令,以「單一使用者模式」來啟動預設執行個體:
net start MSSQLSERVER /m -- 若為具名執行個體,例如:I4,可以使用以下的範例: net start mssql$I4 /m
--P02
工作2:還原系統資料庫:master
步驟01. 使用 sqlcmd 公用程式,連線登入到 SQL Server 預設執行個體,請參考以下的範例:
sqlcmd -S localhost 或是 sqlcmd -- 若為具名執行個體,例如:I4,可以使用以下的範例: sqlcmd -S localhost\I4
--P03
步驟02. 還原系統資料庫:master,在 sqlcmd 公用程式內,執行以下的命令:
RESTORE DATABASE master FROM DISK ='C:\myAdmin\Device\master.bak' WITH REPLACE GO
注意:
執行還原 master 系統資料庫後,SQL Server 服務會自動被關閉(Shutdown)。
--P04
步驟03. 再度重新啟動 SQL Server 服務。
在「命令提示字元」視窗,執行以下的命令,以正常模式來啟動預設執行個體:
net start MSSQLSERVER -- 若為具名執行個體,例如:I4,可以使用以下的範例: net start mssql$I4
步驟04. 由上,已經完成系統資料庫:master 的還原作業。
工作3:檢查 SQL Server 錯誤記錄檔
步驟01. 檢視 SQL Server 錯誤記錄檔,可以觀察到以下的錯誤訊息:
資料庫 "msdb" 中的 Service Broker將被停用, 因為資料庫 (37B4DB50-1EC5-4AC1-A9FA-4E842746D5C7) 中的 Service Broker GUID 與 sys.databases (7EF5147A-E8D8-4C0E-A806-1A2C10ABF97C) 中的不相符。
--P05
工作4:還原系統資料庫:msdb
步驟01. 執行 SSMS 管理工具來還原系統資料庫:msdb,或是執行以下的範例程式碼來還原:
RESTORE DATABASE msdb FROM DISK ='C:\myAdmin\Device\msdb.bak' GO
--P06
工作5:還原系統資料庫:model
步驟01. 執行 SSMS 管理工具來還原系統資料庫:model,或是執行以下的範例程式碼來還原:
RESTORE DATABASE model FROM DISK ='C:\myAdmin\Device\model.bak' GO
--P07
工作6. 檢查 SQL Server 錯誤記錄檔
步驟01. 關閉 SQL Server 服務,重新啟動 SQL Server 服務。
步驟02. 檢視 SQL Server 錯誤記錄檔,已經看不到以下的錯誤訊息:
資料庫 "msdb" 中的 Service Broker將被停用, 因為資料庫 (37B4DB50-1EC5-4AC1-A9FA-4E842746D5C7) 中的 Service Broker GUID 與 sys.databases (7EF5147A-E8D8-4C0E-A806-1A2C10ABF97C) 中的不相符。
若是在 SQL Server 錯誤記錄檔,有檢視到錯誤:8355,請參考以下的處理方式:
錯誤:8355, 無法傳遞伺服器層級的事件通知。可能是 msdb 中已停用 Service Broker,或是無法啟動 msdsb。在其他資料庫中的事件通知也可能會受到影響。請使 msdb 上線,或啟用 Service Broker。
http://sharedderrick.blogspot.com/2011/05/8355-msdb-service-broker.html
未是沒有使用「單一使用者模式(single user mode)」來啟動 SQL Server 服務,當執行還原系統資料庫:master 作業,將接收到以下的錯誤訊息:
訊息 3108,層級 16,狀態 1,行 1 若要還原 master 資料庫,伺服器必須以單一使用者模式執行。 如需有關啟動單一使用者模式的資訊,請參閱線上叢書中的<如何:啟動 SQL Server 的執行個體 (sqlservr.exe)>(How to: Start an Instance of SQL Server (sqlservr.exe))"。 訊息 3013,層級 16,狀態 1,行 1 RESTORE DATABASE 正在異常結束。 Msg 3108, Level 16, State 1, Line 1 To restore the master database, the server must be running in single-user mode. For information on starting in single-user mode, see "How to: Start an Instance of SQL Server (sqlservr.exe)" in Books Online. Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally.
--P08
--P09
若是以「單一使用者模式(single user mode)」來啟動 SQL Server 服務,可以在 SQL Server 錯誤記錄檔內檢視到以下的訊息:
Warning ****************** SQL Server started in single-user mode. This an informational message only. No user action is required.
--P10
參考資料:
還原 master 資料庫的考量
http://msdn.microsoft.com/zh-tw/library/ms175535.aspx
如何:設定伺服器啟動選項 (SQL Server 組態管理員)
http://msdn.microsoft.com/zh-tw/library/ms345416.aspx
以單一使用者模式啟動 SQL Server
http://msdn.microsoft.com/zh-tw/library/ms188236.aspx
如何:還原 master 資料庫 (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms190679.aspx
備份和還原系統資料庫的考量
http://msdn.microsoft.com/zh-tw/library/ms190190.aspx
沒有留言:
張貼留言