Share via


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

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

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

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

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

  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. master、model、および msdb の各データベースの最新のバックアップを探します。

  5. SQL Server のインスタンスがレプリケーション ディストリビューターとして構成されている場合は、ディストリビューション データベースの最新のバックアップを探します。

  6. システム データベースの再構築に必要な権限を持っていることを確認してください。 この操作を実行するには、sysadmin 固定サーバー ロールのメンバーである必要があります。 詳細については、「サーバー レベルのロール」を参照してください。

  7. master、model、msdb のデータおよびログのテンプレート ファイルのコピーがローカル サーバーに存在することを確認します。 テンプレート ファイルの既定の場所は、C:\Program Files\Microsoft SQL Server\MSSQL10.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 インストール メディアをディスク ドライブに挿入するか、コマンド プロンプトから、ディレクトリをローカル サーバーの setup.exe ファイルがある場所に変更します。 サーバーの既定の場所は C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release です。

  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」と入力します。 名前付きインスタンスには、server_name\instance_name という形式で名前を入力します。 

    /SQLSYSADMINACCOUNTS=accounts

    sysadmin 固定サーバー ロールに追加する Windows グループまたは個々のアカウントを指定します。 複数のアカウントを指定する場合、各アカウントを空白で区切ります。 たとえば、「BUILTIN\Administrators MyDomain\MyUser」と入力します。 名前に空白文字を含むアカウントを指定する場合は二重引用符で囲みます (例 : 「"NT AUTHORITY\SYSTEM"」)。

    [ /SAPWD=StrongPassword ]

    SQL Serversa アカウントのパスワードを指定します。 このパラメーターは、インスタンスが混合モード認証 (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 配布メディアから、SQL Server セットアップ プログラム (setup.exe) を起動します。

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

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

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

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

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

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

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

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

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

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

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

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

関連項目

概念

変更履歴

変更内容

この手順を実行する前に、対応するクラスター アプリケーション グループ内の SQL Server リソースをオフラインにしておく必要があることを示すように、クラスター情報を変更しました。

/SQLSYSADMINACCOUNTS の説明に、空白文字を含むアカウント名を二重引用符で囲む必要があるという内容を追加しました。