分享方式:


重建系統資料庫

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

本主題內容

開始之前

限制與制約

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

先決條件

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

  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. 確認本機伺服器上存在主要、模型、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 資源必須離線。

此程式不會重建資源資料庫。 請參閱本主題稍後的「重建資源資料庫程序」一節。

若要重建 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 的執行個體設定為複製發行者,您必須還原發行資料庫。 如需詳細資訊,請參閱 備份及還原複寫的資料庫

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

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

重建資源資料庫

下列程式會重建資源系統資料庫。 當您重建資源資料庫時,所有 Service Pack 和熱修正都會遺失,因此必須重新套用。

若要重建資源系統資料庫:

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

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

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

  4. 在 [選取實例] 頁面上,選取要修復的實例,然後按 [ 下一步]。

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

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

建立新的 msdb 資料庫

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

警告

msdb 使用 instmsdb 腳本重建資料庫將會刪除儲存在 msdb 中的所有資訊,如作業、警示、操作員、維護計劃、備份歷程記錄、基於策略的管理設定、資料庫郵件、效能資料倉儲等。

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

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

    如需詳細資訊,請參閱啟動、停止、暫停、繼續、重啟資料庫引擎、SQL Server Agent 或 SQL Server Browser 服務

  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*.*。 這項搜尋將會為您指出包含重建系統資料庫結果的任何記錄檔。 您可以開啟這些記錄檔,然後檢查它們是否有相關的錯誤訊息。

另請參閱

系統資料庫