或是修改預設的伺服器層級定序。
您無法重建指定的系統資料庫。
重建 master、model、msdb 和 tempdb 系統資料庫時,系統會在這些資料庫的原始位置中卸除並重新建立它們。
如果您在重建陳述式中指定了新的定序,系統就會使用該定序設定來建立系統資料庫。
使用者對這些資料庫所做的任何修改都將遺失。
例如,您可能會在 master 資料庫中設有使用者定義的物件、在 msdb 中設有排程的作業,或在 model 資料庫中變更預設資料庫設定。
記錄系統資料庫之所有資料和記錄檔的目前定序。
重建系統資料庫會將所有系統資料庫安裝到其原始位置。
如果您已將系統資料庫的資料或記錄檔移至不同的位置,就必須再次移動這些檔案。
-- 查詢系統資料庫的目前位置 SELECT name N'檔案名稱', type_desc N'檔案類型',physical_name N'目前位置' FROM sys.master_files WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
--P00
若為叢集執行個體,您就必須在使用中節點上執行這項程序。這項程序不會重建 resource 資料庫。
如果 SQL Server 執行個體設定為複寫散發者,請記得備份散發資料庫。
確定您擁有重建系統資料庫的適當權限。若要執行這項作業,您必須是 sysadmin 固定伺服器角色的成員。
完整的規劃流程,請參考:
重建系統資料庫
http://msdn.microsoft.com/zh-tw/library/dd207003.aspx
實作練習:重建系統資料庫
包含以下的工作:
備份系統資料庫
模擬系統損毀
重建系統資料庫
驗證是否已經完成重建作業
使用環境:以 SQL Server 2008 R2 x64 位元版本為例
準備工作:
1. 以預設的執行個體為例。
2. 準備 SQL Server 2008 安裝媒體
工作1:備份系統資料庫
步驟01. 建立「登入帳戶」、「作業」。
步驟02. 備份系統資料庫:master、msdb、model。
-- 備份系統資料庫:master、model、msdb USE master GO BACKUP DATABASE [master] TO DISK = N'C:\myAdmin\Device\master.bak' WITH INIT, NAME = N'master-完整 資料庫 備份', COMPRESSION GO BACKUP DATABASE [model] TO DISK = N'C:\myAdmin\Device\model.bak' WITH INIT, NAME = N'model-完整 資料庫 備份', COMPRESSION GO BACKUP DATABASE [msdb] TO DISK = N'C:\myAdmin\Device\msdb.bak' WITH INIT, NAME = N'msdb-完整 資料庫 備份', COMPRESSION GO
工作2:模擬系統損毀
步驟01. 停止 SQL Server 服務。
步驟02. 使用「檔案總管」,瀏覽以下的資料夾路徑:
C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
步驟03. 建立新的資料夾:oldData,並將以下的檔案移動到新的資料夾內:
master 資料庫:master.mdf、mastlog.ldf。 model 資料庫:model.mdf、modellog.ldf。 msdb 資料庫:MSDBData.mdf、MSDBLog.ldf。
--P01
步驟04. 重新啟動 SQL Server,但應該是無法啟動。
步驟05. 檢視「事件檢視器」與「SQL Server 錯誤記錄檔」,可以觀察到以下的相關資料:
--(1) SQL Server 錯誤記錄檔 2011-05-07 21:19:09.18 Server Error: 17113, Severity: 16, State: 1. 2011-05-07 21:19:09.18 Server Error 2(系統找不到指定的檔案。) occurred while opening file 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf' to obtain configuration information at startup. An invalid startup option might have caused the error. Verify your startup options, and correct or remove them if necessary. --(2)事件識別碼:17113 事件檢視器_應用程式 在啟動期間,開啟檔案 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf' 以取得組態資訊時發生錯誤 2(系統找不到指定的檔案。)。這可能是無效的啟動選項所造成的錯誤。請確認您的啟動選項,並在必要時更正或移除它們。 --(3)事件識別碼:7024 事件檢視器_系統 SQL Server (MSSQLSERVER) 服務因服務特定的錯誤 %%17113 而終止。
--P02
--P03
--P04
工作3:重建系統資料庫
SQL Server 2008 R2 版本,仍須放入 SQL Server 2008 R2 安裝媒體後,才能執行重建系統資料庫之作業。
請參考以下的相關資料:
無法重建系統資料庫,以 SQL Server 2008 R2 版本為例
http://sharedderrick.blogspot.com/2011/05/sql-server-2008-r2.html
步驟01. 放入 SQL Server 2008 R2 安裝媒體到光碟機。
步驟02. 在「命令提示字元」視窗中,切換目錄到SQL Server 2008 R2 安裝媒體的位置。例如是在磁碟D。
在「命令提示字元」視窗中,輸入以下的指令:
D:
步驟02. 在 [命令提示字元] 視窗中,輸入下列命令。
方括號是用來表示選擇性參數。請勿輸入方括號。使用 Windows Vista 作業系統並啟用使用者帳戶控制 (UAC) 時,執行安裝程式需要更高的權限。您必須以管理員的身分執行命令提示字元。
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]
例如:
-- 例如: setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=Administrator /SAPWD=P@ssw0rd
--P05
參數說明如下:
(1) /QUIET 或 /Q
指定安裝程式的執行不使用任何使用者介面。
(2) /ACTION=REBUILDDATABASE
指定安裝程式要重新建立系統資料庫。
(3) /INSTANCENAME=InstanceName
這是 SQL Server 執行個體的名稱。若為預設執行個體,請輸入 MSSQLSERVER。
若為具名執行個體,請使用 server_name\instance_name 格式來輸入名稱。
(4) /SQLSYSADMINACCOUNTS=accounts
指定要加入至 sysadmin 固定伺服器角色的 Windows 群組或個別帳戶。
指定多個帳戶時,請以空格隔開這些帳戶。
例如,您可以輸入 BUILTIN\Administrators MyDomain\MyUser。
當您要指定的帳戶在帳戶名稱中包含空白時,請以雙引號括住該帳戶。例如,輸入 NT AUTHORITY\SYSTEM。
(5) [ /SAPWD=StrongPassword ]
指定 SQL Server sa 帳戶的密碼。如果執行個體使用混合驗證 (SQL Server 和 Windows 驗證) 模式,這就是必要的參數。
sa 帳戶是已知的 SQL Server 帳戶,而且經常是惡意使用者的攻擊目標。請務必針對 sa 登入使用一個增強式密碼。
請勿針對 Windows 驗證模式指定此參數。
(6) [ /SQLCOLLATION=CollationName ]
指定新的伺服器層級定序。這個參數是選擇性的。如果沒有指定,就會使用伺服器的目前定序。
變更伺服器層級定序並不會變更現有使用者資料庫的定序。所有新建立的使用者資料庫預設都會使用新的定序。
步驟03. 等待執行完成後,觀察「命令提示字元」視窗與檔案總管:
--P06
--P07
當安裝程式完成系統資料庫的重建作業時,它就會返回命令提示字元,而且不會顯示任何訊息。
工作4:驗證是否已經完成重建作業
步驟01. 使用檔案總管,開啟安裝記錄檔案: Summary.txt,其預設的路徑是在:
C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs。
--P08
步驟02. 重新啟動 SQL Server 服務。
若能正確重新啟動服務,可以表示系統可以正常提供服務。
重建後的工作
重建資料庫之後,您可能必須執行下列額外的工作:
1. 套用最新的 Service Pack 和任何適用的 Hotfix。
2. 還原 master、model 和 msdb 資料庫的最新完整備份。
請參考以下的相關資料:
還原系統資料庫:master、model、msdb
http://sharedderrick.blogspot.com/2011/05/mastermodelmsdb.html
如果您已變更伺服器定序,請勿還原系統資料庫。這樣做會將新的定序取代成先前的定序設定。
如果無法使用備份,或者還原的備份並非最新備份,請重新建立任何遺漏的項目。
例如,請針對您的使用者資料庫、備份裝置、SQL Server 登入、端點等重新建立所有遺漏的項目。
重新建立項目的最佳方式是執行建立這些項目的原始指令碼。
3. 如果 SQL Server 執行個體設定為複寫散發者,您就必須還原散發資料庫。
4. 將系統資料庫移至您先前記錄的位置。
5. 確認伺服器範圍的組態值符合您先前記錄的值。
參考資料:
Cannot rebuild system databases in 2008R2
http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/29a7f20b-a2a1-4e72-8eca-17e2037c1ae5
Rebuilding system databases for SQL Server 2008 R2
https://connect.microsoft.com/SQLServer/feedback/details/564905/rebuilding-system-databases-for-sql-server-2008-r2
Rebuilding system databases in 2008 R2
http://sqlblog.com/blogs/tibor_karaszi/archive/2010/06/03/rebuilding-system-databases-in-2008-r2.aspx
Rebuilding System Databases
http://technet.microsoft.com/en-us/library/dd207003.aspx
How to Rebuild System Databases in SQL Server 2008
http://blogs.msdn.com/b/psssql/archive/2008/08/29/how-to-rebuild-system-databases-in-sql-server-2008.aspx
重建系統資料庫
http://msdn.microsoft.com/zh-tw/library/dd207003.aspx
無法重建系統資料庫,以 SQL Server 2008 R2 版本為例
http://sharedderrick.blogspot.com/2011/05/sql-server-2008-r2.html
還原系統資料庫:master、model、msdb
http://sharedderrick.blogspot.com/2011/05/mastermodelmsdb.html
沒有留言:
張貼留言