次の方法で共有


システム データベースを再構築する

マスターモデルmsdb、またはリソース システム データベースの破損の問題を修正したり、既定のサーバー レベルの照合順序を変更したりするには、システム データベースを再構築する必要があります。 このトピックでは、SQL Server 2014 でシステム データベースを再構築する手順について説明します。

このトピックについて

開始する前に

制限事項と制約条件

マスター、モデル、msdb、および tempdb システム データベースが再構築されると、データベースは削除され、元の場所に再作成されます。 rebuild ステートメントで新しい照合順序を指定した場合、その照合順序設定を使用してシステム データベースが作成されます。 これらのデータベースに対するユーザーの変更はすべて失われます。 たとえば、マスター データベースにユーザー定義オブジェクト、msdb のスケジュールされたジョブ、モデル データベースの既定のデータベース設定への変更があるとします。

[前提条件]

システム データベースを再構築する前に、次のタスクを実行して、システム データベースを現在の設定に復元できるようにします。

  1. サーバー全体の構成値をすべて記録します。

    SELECT * FROM sys.configurations;  
    
  2. SQL Server のインスタンスと現在の照合順序に適用されているすべてのサービス パックと修正プログラムを記録します。 システム データベースを再構築した後、これらの更新プログラムを再適用する必要があります。

    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. マスター、モデル、および 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=アカウント 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 にあります。

再構築後のタスク

データベースを再構築した後、次の追加タスクを実行する必要がある場合があります。

  • マスター、モデル、および msdb データベースの最新の完全バックアップを復元します。 詳細については、「システム データベースのバックアップと復元 (SQL Server)」を参照してください。

    重要

    サーバーの照合順序を変更した場合は、システム データベースを復元しないでください。 これにより、新しい照合順序が以前の照合順序設定に置き換えられます。

    バックアップが使用できない場合、または復元されたバックアップが最新でない場合は、不足しているエントリを再作成します。 たとえば、ユーザー データベース、バックアップ デバイス、SQL Server ログイン、エンドポイントなど、不足しているすべてのエントリを再作成します。 エントリを再作成する最善の方法は、エントリを作成した元のスクリプトを実行することです。

重要

スクリプトをセキュリティで保護して、個人によって承認されていないユーザーによって変更されないようにすることをお勧めします。

  • SQL Server のインスタンスがレプリケーション ディストリビューターとして構成されている場合は、ディストリビューション データベースを復元する必要があります。 詳細については、「 レプリケートされたデータベースのバックアップと復元」を参照してください。

  • 前に記録した場所にシステム データベースを移動します。 詳細については、「 システム データベースの移動」を参照してください。

  • サーバー全体の構成値が、前に記録した値と一致するかどうかを確認します。

リソース データベースを再構築する

次の手順では、リソース システム データベースを再構築します。 リソース データベースを再構築すると、すべてのサービス パックとホットフィックスが失われるため、再適用する必要があります。

リソース システム データベースを再構築するには:

  1. 配布メディアから SQL Server 2014 セットアップ プログラム (setup.exe) を起動します。

  2. 左側のナビゲーション領域で、[ メンテナンス] をクリックし、[ 修復] をクリックします。

  3. セットアップ サポート ルールおよびセットアップ サポート ファイルのルーチンが実行されて、システムに必須コンポーネントがインストールされていること、およびコンピューターがセットアップの検証ルールに合格していることが確認されます。 続行するには、 [OK] または [インストール] をクリックします。

  4. [インスタンスの選択] ページで、修復するインスタンスを選択し、[ 次へ] をクリックします。

  5. 修復ルールが実行され、操作が検証されます。 [Next] をクリックして先へ進みます。

  6. [ 修復の準備完了 ] ページで、[ 修復] をクリックします。 [完了] ページでは、操作が完了したことが示されます。

新しい msdb データベースを作成する

msdb データベースが破損していて、msdb データベースのバックアップがない場合は、instmsdb スクリプトを使用して新しいmsdbを作成できます。

警告

instmsdb スクリプトを使用して msdb データベースを再構築すると、ジョブ、アラート、オペレーター、メンテナンス プラン、バックアップ履歴、ポリシー ベースの管理設定、データベース メール、パフォーマンス データ ウェアハウスなど、msdbに格納されているすべての情報が削除されます。

  1. SQL Server エージェント、SSRS、SSIS、SQL Server をデータ ストアとして使用するすべてのアプリケーションなど、データベース エンジンに接続するすべてのサービスを停止します。

  2. 次のコマンドを使用して、コマンド ラインから SQL Server を起動します。 NET START MSSQLSERVER /T3608

    詳細については、「 データベース エンジン、SQL Server エージェント、または 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 構成マネージャーを使用して、データベース エンジン サービスを正常に停止して再起動します。

  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>をデータベース エンジンのインスタンスに置き換えます。 SQL Server のインスタンスのファイル システム パスを使用します。

  7. Windows メモ帳を使用して instmsdb.out ファイルを開き、出力でエラーがないか確認します。

  8. インスタンスにインストールされているサービス パックまたは修正プログラムを再適用します。

  9. ジョブ、アラートなど、 msdb データベースに格納されているユーザー コンテンツを再作成します。

  10. msdb データベースをバックアップします。

再構築エラーのトラブルシューティング

構文やその他の実行時エラーがコマンド プロンプト ウィンドウに表示されます。 Setup ステートメントで次の構文エラーを確認します。

  • 各パラメーター名の前にスラッシュ (/) がありません。

  • パラメーター名とパラメーター値の間に等号 (=) がありません。

  • パラメーター名と等号の間に空白スペースが存在します。

  • 構文で指定されていないコンマ (,) またはその他の文字が存在する。

再構築操作が完了したら、SQL Server ログでエラーがないか調べます。 既定のログの場所は C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Logs です。 再構築プロセスの結果を含むログ ファイルを見つけるには、コマンド プロンプトからディレクトリを Logs フォルダーに変更し、 findstr /s RebuildDatabase summary*.*実行します。 この検索では、システム データベースの再構築の結果を含むログ ファイルが表示されます。 ログ ファイルを開き、関連するエラー メッセージがないか調べます。

こちらもご覧ください

システム データベース