共用方式為


重建系統資料庫

您必須重建系統資料庫,才能在 mastermodelmsdbresource 系統資料庫中修正損毀問題,或修改預設的伺服器層級定序。 本主題提供在 SQL Server 2014 中重建系統資料庫的逐步指示。

本主題內容

開始之前

限制事項

重建 master、model、msdb 和 tempdb 系統資料庫時,系統會在這些資料庫的原始位置中卸除並重新建立它們。 如果您在重建陳述式中指定了新的定序,系統就會使用該定序設定來建立系統資料庫。 使用者對這些資料庫所做的任何修改都將遺失。 例如,您可能會在 master 資料庫中設有使用者定義的物件、在 msdb 中設有排程的作業,或在 model 資料庫中變更預設資料庫設定。

必要條件

請在重建系統資料庫之前執行下列工作,以便確保您可以將系統資料庫還原成目前的設定。

  1. 記錄所有伺服器範圍的組態值。

    SELECT * FROM sys.configurations;  
    
  2. 記錄套用至SQL Server實例和目前定序的所有 Service Pack 和 Hotfix。 您必須在重建系統資料庫之後重新套用這些更新。

    SELECT  
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,  
    SERVERPROPERTY('ProductLevel') AS ProductLevel,  
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,  
    SERVERPROPERTY('Collation') AS Collation;  
    
  3. 記錄系統資料庫之所有資料和記錄檔的目前位置。 重建系統資料庫會將所有系統資料庫安裝到其原始位置。 如果您已將系統資料庫的資料或記錄檔移至不同的位置,就必須再次移動這些檔案。

    SELECT name, physical_name AS current_file_location  
    FROM sys.master_files  
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));  
    
  4. 找出 master、model 和 msdb 資料庫的目前備份。

  5. 如果SQL Server實例設定為複寫散發者,請找出散發資料庫的目前備份。

  6. 確定您擁有重建系統資料庫的適當權限。 若要執行這項作業,您必須是系統管理員 (sysadmin) 固定伺服器角色的成員。 如需詳細資訊,請參閱 伺服器層級角色

  7. 確認 master、model 和 msdb 資料與記錄範本檔案的副本都存在本機伺服器上。 這些範本檔案的預設位置為 C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn\Templates。 這些檔案會在重建程序期間使用,而且它們必須存在,才能讓安裝程式順利執行。 如果這些檔案已遺失,請執行安裝程式的修復功能,或手動從安裝媒體中複製這些檔案。 若要在安裝媒體上找到這些檔案,請巡覽至適當的平台目錄 (x86 或 x64),然後巡覽至 setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates。

重建系統資料庫

下列程序會重建 master、model、msdb 和 tempdb 系統資料庫。 您無法指定要重建的系統資料庫。 如果是叢集執行個體,您必須在使用中的節點上執行此程序,而且執行程序前,對應的叢集應用程式群組中的 SQL Server 資源必須離線。

這項程序不會重建 resource 資料庫。 請參閱本主題後面的<重建 resource 資料庫程序>一節。

若要重建 SQL Server 執行個體的系統資料庫:

  1. 將 SQL Server 2014 安裝媒體插入磁片磁碟機,或從命令提示字元將目錄變更為本機伺服器上setup.exe檔案的位置。 伺服器的預設位置是 C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Release。

  2. 在 [命令提示字元] 視窗中,輸入下列命令。 方括號是用來表示選擇性參數。 請勿輸入方括號。 使用啟用使用者帳戶控制 (UAC) 的 Windows 作業系統時,必須要有更高的權限才能執行安裝程式。 您必須以管理員的身分執行命令提示字元。

    Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]

    參數名稱 描述
    /QUIET 或 /Q 指定安裝程式的執行不使用任何使用者介面。
    /ACTION=REBUILDDATABASE 指定安裝程式要重新建立系統資料庫。
    /INSTANCENAME=InstanceName 這是SQL Server實例的名稱。 若為預設執行個體,請輸入 MSSQLSERVER。
    /SQLSYSADMINACCOUNTS=accounts 指定要加入至系統管理員 (sysadmin) 固定伺服器角色的 Windows 群組或個別帳戶。 指定多個帳戶時,請以空格隔開這些帳戶。 例如,您可以輸入 BUILTIN\Administrators MyDomain\MyUser。 當您要指定的帳戶在帳戶名稱中包含空白時,請以雙引號括住該帳戶。 例如,輸入 NT AUTHORITY\SYSTEM
    [ /SAPWD=StrongPassword ] 指定SQL Server sa 帳戶的密碼。 如果執行個體使用混合驗證 (SQL Server 和 Windows 驗證) 模式,即需此參數。

    ** 安全性注意事項 **sa 帳戶是已知的SQL Server帳戶,而且通常是惡意使用者的目標。 請務必針對 sa 登入使用一個增強式密碼。

    請勿針對 Windows 驗證模式指定此參數。
    [ /SQLCOLLATION=CollationName ] 指定新的伺服器層級定序。 這是選擇性參數。 如果沒有指定,就會使用伺服器的目前定序。

    **重要** 變更伺服器層級定序並不會變更現有使用者資料庫的定序。 所有新建立的使用者資料庫預設都會使用新的定序。

    如需詳細資訊,請參閱 設定或變更伺服器定序
  3. 當安裝程式完成系統資料庫的重建作業時,它就會返回命令提示字元,而且不會顯示任何訊息。 您可以檢查 Summary.txt 記錄檔來確認此程序是否順利完成。 這個檔案位於 C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Logs。

重建後的工作

重建資料庫之後,您可能必須執行下列額外的工作:

  • 還原 master、model 和 msdb 資料庫的最新完整備份。 如需詳細資訊,請參閱系統資料庫的備份與還原 (SQL Server)

    重要

    如果您已變更伺服器定序,請勿還原系統資料庫。 這樣做會將新的定序取代成先前的定序設定。

    如果無法使用備份,或者還原的備份並非最新備份,請重新建立任何遺漏的項目。 例如,針對使用者資料庫、備份裝置、SQL Server 登入、端點等,重新建立所有遺漏的項目。 重新建立項目的最佳方式是執行建立這些項目的原始指令碼。

重要

我們建議您保護指令碼的安全,防止它們遭受未獲授權的人員更改。

  • 如果SQL Server實例設定為複寫散發者,您必須還原散發資料庫。 如需詳細資訊,請參閱 備份及還原複寫的資料庫

  • 將系統資料庫移至您先前記錄的位置。 如需詳細資訊,請參閱 移動系統資料庫

  • 確認伺服器範圍的組態值符合您先前記錄的值。

重建資源資料庫

下列程序會重建 resource 系統資料庫。 當您重建 resource 資料庫時,所有 Service Pack 和 Hotfix 都會遺失,因此必須重新套用。

若要重建 resource 系統資料庫:

  1. 從發佈媒體啟動 SQL Server 2014 安裝程式 (setup.exe) 。

  2. 在左側導覽區域中,按一下 [維護] ,然後按一下 [修復]

  3. 安裝程式支援規則和檔案常式將會執行,以便確保您的系統已安裝必要元件而且電腦通過安裝程式驗證規則。 按一下 [確定][安裝] 繼續進行。

  4. 在 [選取執行個體] 頁面上,選取要修復的執行個體,然後按 [下一步]

  5. 修復規則將會執行,以便驗證作業。 若要繼續進行,請按 [下一步]

  6. [已完成修復準備工作] 頁面中,按一下 [修復] 。 [完成] 頁面會指出作業已完成。

建立新的 msdb 資料庫

msdb如果資料庫已損毀,而且您沒有資料庫的 msdb 備份,您可以使用instmsdb腳本建立新的 msdb

警告

msdb使用instmsdb腳本重建資料庫將會消除儲存在 msdb 中的所有資訊,例如作業、警示、操作員、維護計畫、備份歷程記錄、原則式管理設定、Database Mail、效能Data Warehouse等。

  1. 停止連線資料庫引擎的所有服務,包括 SQL Server Agent、SSRS、SSIS,及使用 SQL Server 作為資料存放區的所有應用程式。

  2. 使用 命令從命令列啟動SQL Server:NET START MSSQLSERVER /T3608

    如需詳細資訊,請參閱 启动、停止、暂停、继续、重启 SQL Server 服务

  3. 在另一個命令列視窗中,執行下列命令卸離 msdb 資料庫,並將servername > 取代 <為 SQL Server 的實例:SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"

  4. 使用 [Windows 檔案總管] 重新命名 msdb 資料庫檔案。 根據預設,這些是位於 SQL Server 實例的 DATA 子資料夾中。

  5. 使用SQL Server 組態管理員,通常會停止並重新啟動 Database Engine 服務。

  6. 在命令列視窗中,連接到 SQL Server 並執行 命令:SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install\instmsdb.sql" -o" C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install\instmsdb.out"

    servername > 取代 <為 Database Engine 的實例。 使用 SQL Server 執行個體的檔案系統路徑。

  7. 使用 [Windows 記事本] 開啟 instmsdb.out 檔,並檢查輸出是否有任何錯誤。

  8. 在執行個體上重新套用任何已安裝的 Service Pack 或 Hotfix。

  9. 重新建立儲存在 msdb 資料庫中的使用者內容,例如作業、警示等。

  10. 備份 msdb 資料庫。

疑難排解重建錯誤

語法和其他執行階段錯誤會顯示在 [命令提示字元] 視窗中。 您可以檢查安裝程式陳述式是否有下列語法錯誤:

  • 在每個參數名稱前面遺漏了斜線 (/)。

  • 在參數名稱與參數值之間遺漏了等號 (=)。

  • 在參數名稱與等號之間存在空格。

  • 存在逗號 (,) 或語法中並未指定的其他字元。

完成重建作業後,請檢查 SQL Server 記錄是否有任何錯誤。 預設記錄檔位置是 C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Logs。 若要找出包含重建程序結果的記錄檔,請在命令提示字元中,將目錄變更為 Logs 資料夾,然後執行 findstr /s RebuildDatabase summary*.*。 這項搜尋將會為您指出包含重建系統資料庫結果的任何記錄檔。 您可以開啟這些記錄檔,然後檢查它們是否有相關的錯誤訊息。

另請參閱

系統資料庫