必須重建系統資料庫,才能修正 master、 model、 msdb 或 資源 系統資料庫中的損毀問題,或是修改預設的伺服器層級定序。 本主題提供在 SQL Server 2014 中重建系統資料庫的逐步指示。
本主題內容
開始之前
限制與制約
重建 master、model、msdb 和 tempdb 系統資料庫時,資料庫會在原始位置卸除並重新建立。 如果您在重建陳述式中指定了新的定序,系統就會使用該定序設定來建立系統資料庫。 使用者對這些資料庫所做的任何修改都將遺失。 例如,您可能在 master 資料庫中有使用者定義的物件、msdb 中的排程工作,或變更模型資料庫中的預設資料庫設定。
先決條件
請在重建系統資料庫之前執行下列工作,以便確保您可以將系統資料庫還原成目前的設定。
記錄所有伺服器範圍的組態值。
SELECT * FROM sys.configurations;
記錄套用至 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;
記錄系統資料庫之所有資料和記錄檔的目前位置。 重建系統資料庫會將所有系統資料庫安裝到其原始位置。 如果您已將系統資料庫的資料或記錄檔移至不同的位置,就必須再次移動這些檔案。
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'));
找出 master、model 和 msdb 資料庫的目前備份。
如果 SQL Server 的實例設定為複寫分發者,請找出分發資料庫的目前備份。
確定您擁有重建系統資料庫的適當權限。 若要執行這項作業,您必須是固定伺服器角色的成員
sysadmin
。 如需詳細資訊,請參閱 伺服器層級角色。確認本機伺服器上存在主要、模型、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 實例的系統資料庫:
將 SQL Server 2014 安裝媒體插入磁碟驅動器,或從命令提示字元將目錄變更為本機伺服器上 setup.exe 檔案的位置。 伺服器上的預設位置為 C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Release。
在 [命令提示字元] 視窗中,輸入下列命令。 方括號是用來表示選擇性參數。 請勿輸入方括號。 使用啟用使用者帳戶控制 (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 ] 指定新的伺服器層級定序。 這是選擇性參數。 如果沒有指定,就會使用伺服器的目前排序規則。
**重要** 變更伺服器層級定序並不會變更現有用戶資料庫的定序。 所有新建立的使用者資料庫預設都會使用新的定序。
如需詳細資訊,請參閱 設定或變更伺服器定序。當安裝程式完成系統資料庫的重建作業時,它就會返回命令提示字元,而且不會顯示任何訊息。 您可以檢查 Summary.txt 記錄檔來確認此程序是否順利完成。 此檔案位於 C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Logs。
重建後工作
重建資料庫之後,您可能需要執行下列其他工作:
還原 master、model 和 msdb 資料庫的最新完整備份。 如需詳細資訊,請參閱系統資料庫的備份與還原 (SQL Server)。
這很重要
如果您已變更伺服器定序,請勿還原系統資料庫。 這樣做會將新的定序取代成先前的定序設定。
如果備份無法使用,或還原的備份不是最新的,請重新建立任何遺漏的專案。 例如,針對使用者資料庫、備份裝置、SQL Server 登入、端點等,重新建立所有遺漏的項目。 重新建立項目的最佳方式是執行建立這些項目的原始指令碼。
這很重要
我們建議您保護指令碼的安全,防止它們遭受未獲授權的人員更改。
如果 SQL Server 的執行個體設定為複製發行者,您必須還原發行資料庫。 如需詳細資訊,請參閱 備份及還原複寫的資料庫。
將系統資料庫移至您先前記錄的位置。 如需詳細資訊,請參閱 移動系統資料庫。
確認伺服器範圍的組態值符合您先前記錄的值。
重建資源資料庫
下列程式會重建資源系統資料庫。 當您重建資源資料庫時,所有 Service Pack 和熱修正都會遺失,因此必須重新套用。
若要重建資源系統資料庫:
從發佈媒體啟動 SQL Server 2014 安裝程式(setup.exe)。
在左側導覽區域中,按兩下 [ 維護],然後按兩下 [ 修復]。
安裝程式支援規則和檔案常式將會執行,以便確保您的系統已安裝必要元件而且電腦通過安裝程式驗證規則。 按一下 [確定] 或 [安裝] 繼續進行。
在 [選取實例] 頁面上,選取要修復的實例,然後按 [ 下一步]。
修復規則將會執行,以便驗證作業。 若要繼續進行,請按 [下一步] 。
從 [ 準備修復] 頁面,按兩下 [ 修復]。 [完成] 頁面會指出作業已完成。
建立新的 msdb 資料庫
msdb
如果資料庫已損毀,而且您沒有資料庫的備份msdb
,您可以使用 instmsdb 腳本來建立新的 msdb
。
警告
msdb
使用 instmsdb 腳本重建資料庫將會刪除儲存在 msdb
中的所有資訊,如作業、警示、操作員、維護計劃、備份歷程記錄、基於策略的管理設定、資料庫郵件、效能資料倉儲等。
停止連線資料庫引擎的所有服務,包括 SQL Server Agent、SSRS、SSIS,及使用 SQL Server 作為資料存放區的所有應用程式。
在命令列下使用命令來啟動 SQL Server:
NET START MSSQLSERVER /T3608
如需詳細資訊,請參閱啟動、停止、暫停、繼續、重啟資料庫引擎、SQL Server Agent 或 SQL Server Browser 服務。
在另一個命令行視窗中,執行下列命令來中斷資料庫連結
msdb
,並將 <servername> 取代為 SQL Server 的實例:SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"
使用 [Windows 檔案總管] 重新命名
msdb
資料庫檔案。 根據預設,這些位於 SQL Server 實例的 DATA 子資料夾中。使用 SQL Server 組態管理員,通常會停止並重新啟動 Database Engine 服務。
在命令列視窗中,連線到 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 執行個體的檔案系統路徑。
使用 Windows 記事本,開啟 instmsdb.out 檔案,並檢查輸出是否有任何錯誤。
重新套用實例上安裝的任何 Service Pack 或 Hotfix。
重新建立儲存在
msdb
資料庫中的用戶內容,例如作業、警示等。msdb
備份資料庫。
針對重建錯誤進行疑難解答
語法和其他執行階段錯誤會顯示在 [命令提示字元] 視窗中。 您可以檢查安裝程式陳述式是否有下列語法錯誤:
每個參數名稱前面遺漏斜線標記 (/)。
參數名稱和參數值之間遺漏等號 (=)。
在參數名稱與等號之間存在空格。
語法中未指定的逗號(,)或其他字元的存在。
完成重建作業後,請檢查 SQL Server 記錄是否有任何錯誤。 默認記錄位置為 C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Logs。 若要找出包含重建程序結果的記錄檔,請在命令提示字元中,將目錄變更為 Logs 資料夾,然後執行 findstr /s RebuildDatabase summary*.*
。 這項搜尋將會為您指出包含重建系統資料庫結果的任何記錄檔。 您可以開啟這些記錄檔,然後檢查它們是否有相關的錯誤訊息。