次の方法で共有


システム データベースの再構築

mastermodelmsdb、または resource の各システム データベースの損傷による問題を解決するか、既定のサーバー レベルの照合順序を変更するには、システム データベースを再構築する必要があります。このトピックでは、システム データベースを再構築する手順について説明します。

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

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

システム データベースを再構築する前に次の作業を行い、システム データベースを現在の設定に復元できるようにしておいてください。

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

    SELECT * FROM sys.configurations;
    
    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;
    
    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'));
    
    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\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 の各システム データベースを再構築します。再構築するシステム データベースを指定することはできません。クラスター化されたインスタンスの場合、この手順はアクティブ ノードで実行する必要があります。また、手順を実行する前に、対応するクラスター アプリケーション グループ内の SQL Server リソースをオフラインにしておく必要があります。

この手順では resource データベースが再構築されません。このトピックで後述する「resource データベースの再構築手順」セクションを参照してください。

SQL Server インスタンスのシステム データベースを再構築するには

  1. SQL Server 2008 R2 インストール メディアをディスク ドライブに挿入します。

  2. コマンド プロンプト ウィンドウから、次のコマンドを入力します。角かっこは省略可能なパラメーターであることを示します。角かっこは入力しません。ユーザー アカウント制御 (UAC) が有効な Windows Vista オペレーション システムを使用する場合は、セットアップの実行に高度な特権が必要になります。管理者としてコマンド プロンプトを実行する必要があります。

    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\100\Setup Bootstrap\Logs にあります。

再構築後の作業

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

  • master 、model、および msdb の各データベースを最新の完全バックアップの状態に復元します。詳細については、「システム データベースのバックアップと復元に関する注意点」を参照してください。

    重要な注意事項重要

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

    バックアップが存在しないか、復元されたバックアップが最新のものでない場合は、存在しないエントリを再作成します。たとえば、ユーザー データベース、バックアップ デバイス、SQL Server ログイン、エンドポイントなどの存在しないエントリをすべて再作成します。エントリを再作成する場合、エントリの作成時と同じスクリプトを実行してください。 

セキュリティに関する注意セキュリティに関する注意

不正ユーザーによる変更を防ぐために、スクリプトを保護しておくことをお勧めします。

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

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

  • サーバー全体の構成値が記録した以前の値と一致することを確認します。

resource システム データベースの再構築手順

次の手順では、resource システム データベースを再構築します。resource システム データベースを再構築する場合は、サービス パックと修正プログラムがすべて失われるため、再適用する必要があります。

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

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

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

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

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

  5. 修復ルールが実行され、操作が検証されます。続行するには、[次へ] をクリックします。

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

新しい msdb データベースの作成

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

注記注意

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

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

  2. NET START MSSQLSERVER /T3608 というコマンドを使用して、コマンド ラインから SQL Server を開始します。

    詳細については、「SQL Server のインスタンスを起動する方法 (net コマンド)」を参照してください。

  3. 別のコマンド ライン ウィンドウで、msdb データベースをデタッチします。これには、SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb" というコマンドを実行します (<servername> は SQL Server のインスタンスに置き換えます)。

  4. Windows エクスプローラーを使用して、msdb データベースの各ファイルの名前を変更します。これらのファイルは、既定で SQL Server インスタンスの DATA サブフォルダーにあります。

  5. SQL Server 構成マネージャーを使用して、データベース エンジン サービスを通常どおり停止および再起動します。

  6. コマンド ライン ウィンドウで、SQL Server に接続し、SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Install\instmsdb.sql" -o" C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Install\instmsdb.out" というコマンドを実行します。

    <servername> はデータベース エンジンのインスタンスに置き換えます。SQL Server のインスタンスのファイル システム パスを使用してください。

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

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

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

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

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

コマンド プロンプト ウィンドウには、構文エラーおよびその他の実行時エラーが表示されます。セットアップ ステートメントに次の構文エラーがないか調査してください。

  • パラメーター名の前のスラッシュ記号 (/) の欠如。

  • パラメーター名とパラメーター値の間の等号 (=) の欠如。

  • パラメーター名と等号の間の空白文字の存在。

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

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

関連項目

概念

変更履歴

INSTANCENAME の説明から、正しくない情報を削除しました。名前付きインスタンスでは、サーバー名を指定する必要はありません。

再構築後の作業から最新のサービス パックおよび対象となる修正プログラムを適用するための要件を削除しました。

システム データベースの再構築手順セクションの手順 1. のローカル サーバーから setup.exe をポイントする手順を削除しました。

新しい msdb データベースの作成に関するセクションを追加しました。