必須重建系統資料庫才能修複 master、model、msdb 或 resource 系統資料庫中的損壞問題或者修改預設的伺服器級定序。本主題提供如何重建系統資料庫的分步說明。
重建系統資料庫之前
重建 master、model、msdb 和 tempdb 系統資料庫時,將刪除這些資料庫,然後在其原位置重新建立它們。如果在重建語句中指定了新定序,則將使用該定序設定建立系統資料庫。使用者對這些資料庫所做的所有修改都會丟失。例如,您在 master 資料庫中的使用者定義對象、msdb 中的預定作業或 model 資料庫中對預設資料庫設定的更改都會丟失。
在重建系統資料庫之前執行下列任務,以確保可以將系統資料庫還原至它們的當前設定。
- 記錄所有伺服器範圍的配置值。複製
SELECT * FROM sys.configurations;
- 記錄所有應用到 SQL Server 執行個體和當前定序的 Service Pack 和Hotfix。重建系統資料庫後必須重新應用這些更新。複製
SELECTSERVERPROPERTY('ProductVersion ') AS ProductVersion,SERVERPROPERTY('ProductLevel') AS ProductLevel,SERVERPROPERTY('ResourceVersion') AS ResourceVersion,SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,SERVERPROPERTY('Collation') AS Collation;
- 記錄系統資料庫的所有資料檔案和記錄檔的當前位置。重建系統資料庫會將所有系統資料庫安裝到其原位置。如果已將系統資料庫資料檔案或記錄檔移動到其他位置,則必須重新移動這些檔案。複製
SELECT name, physical_name AS current_file_locationFROM sys.master_filesWHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
- 找到 master、model 和 msdb 資料庫的當前備份。
- 如果將 SQL Server 的執行個體配置為複製散發者,請找到該散發資料庫的當前備份。
- 確保您有重建系統資料庫的相應許可權。必須是 sysadmin 固定伺服器角色的成員才能執行此操作。有關詳細資料,請參閱伺服器層級角色。
- 請驗證本機伺服器上是否有 master、model、msdb 資料範本檔案和日誌模板檔案的副本。模板檔案的預設位置是 C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\Templates。在重建過程中要用到這些檔案,而且若想讓安裝成功這些檔案就必須存在。如果缺少這些檔案,請運行安裝程式的“修複”功能或者手動從安裝介質中複製這些檔案。若要在安裝介質上尋找這些檔案,請導航到相應的平台目錄(x86、x64 或 ia64),然後導航到 setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates。
系統資料庫重建過程
以下過程將重建 master、model、msdb 和 tempdb 系統資料庫。無法指定要重建哪些系統資料庫。對於叢集執行個體,必須在活動節點上執行此過程。此過程不重建 resource 資料庫。請參閱本主題後面的“resource 資料庫重建過程”部分。
重建 SQL Server 2008 執行個體的系統資料庫:
將 SQL Server 2008 安裝介質插入到磁碟機中,或者在本機伺服器上,從命令提示字元處將目錄更改為 setup.exe 檔的位置。在伺服器上的預設位置為 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release。
在命令提示字元視窗中,輸入以下命令。方括弧用來指示選擇性參數。不要輸入括弧。在使用 Windows Vista 作業系統且啟用了使用者帳戶控制 (UAC) 時,運行安裝程式需要提升的特權。必須以管理員身份運行命令提示字元。
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]
參數名稱 |
說明 |
/QUIET 或 /Q |
指定在沒有任何使用者介面的情況下運行安裝程式。 |
/ACTION=REBUILDDATABASE |
指定安裝程式將重新建立系統資料庫。 |
/INSTANCENAME=執行個體名稱 |
是 SQL Server 執行個體的名稱。對於預設執行個體,請輸入 MSSQLSERVER。對於具名執行個體,請以 server_name\instance_name 格式輸入其名稱。 |
/SQLSYSADMINACCOUNTS=帳戶 |
指定要添加到 sysadmin 固定伺服器角色中的 Windows 組或單個帳戶。指定多個帳戶時,請用空格將帳戶隔開。例如,請輸入 BUILTIN\Administrators MyDomain\MyUser。當您在帳戶名稱內指定包含空格的帳戶時,用雙引號將該帳戶引起來。例如,輸入 NT AUTHORITY\SYSTEM。 |
[ /SAPWD=強密��� ] |
指定 SQL Server sa 帳戶的密碼。如果執行個體使用混合身分識別驗證(SQL Server 和 Windows 身分識別驗證)模式,則此參數是必需的。 安全記事:sa 帳戶是一個廣為人知的 SQL Server 帳戶,並且經常成為惡意使用者的攻擊目標。因此,為 sa 登入名稱使用強密碼非常重要。 不要為 Windows 身分識別驗證模式指定此參數。 |
[ /SQLCOLLATION=定序名稱 ] |
指定新的伺服器級定序。此參數可選。如果沒有指定,則使用伺服器的當前定序。 重要提示:更改伺服器級定序不會更改現有使用者資料庫的定序。預設情況下,所有新建立的使用者資料庫都將使用新定序。 有關詳細資料,請參閱設定和更改伺服器定序。 |
在安裝程式完成系統資料庫重建後,它將返回到命令提示字元,而且不顯示任何訊息。請檢查 Summary.txt 記錄檔以驗證重建過程是否成功完成。此檔案位於 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs。
重建後的任務
重建資料庫後,您可能需要執行以下額外任務:
安全記事: |
建議您保護好指令碼,以防未經授權的人員變更指令碼。 |
- 如果將 SQL Server 執行個體配置為複製散發者,則必須還原散發資料庫。有關詳細資料,請參閱備份與還原複製的資料庫。
- 將系統資料庫移到您以前記錄的位置。有關詳細資料,請參閱移動系統資料庫。
- 驗證伺服器範圍的配置值是否與您以前記錄的值相符。
resource 資料庫重建過程
以下過程將重建 resource 系統資料庫。重建 resource 資料庫時,所有的 Service Pack 和Hotfix都將丟失,因此必須重新應用。
重建 resource 系統資料庫:
從 SQL Server 2008 分發介質中啟動 SQL Server 安裝程式 (setup.exe)。
在左側導航地區中單擊“維護”,然後單擊“修複”。
安裝程式支援規則和檔案常式將運行,以確保您的系統上安裝了必備組件,並且電腦能夠通過安裝程式驗證規則。單擊“確定”或“安裝”以繼續操作。
在“選擇執行個體”頁上,選擇要修複的執行個體,然後單擊“下一步”。
將運行修複規則以驗證修複操作。若要繼續,請單擊“下一步”。
在“準備修複”頁上,單擊“修複”。“完成”頁指示修複操作已完成。
重建錯誤疑難解答
文法和其他執行階段錯誤會顯示在命令提示字元視窗中。檢查 Setup 語句中是否存在以下語法錯誤:
- 每個參數名稱前面缺少斜杠標記 (/)。
- 參數名稱和參數值之間缺少等號 (=)。
- 參數名稱和等號之間存在空格。
- 存在逗號 (,) 或文法中未指定的其他字元。
重建操作完成後,請檢查 SQL Server 日誌中是否存在任何錯誤。預設的日誌位置是 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs。若要尋找包含重建過程的結果的記錄檔,請從命令提示字元處將目錄更改到“Logs”檔案夾,然後運行 findstr /s RebuildDatabase summary*.*
。此搜尋將引導您找到包含系統資料庫重建結果的所有記錄檔。開啟記錄檔,檢查其中有無相關錯誤訊息。