master データベースの復元 (Transact-SQL)

適用対象 SQL Server

この記事では、データベースの完全バックアップから master データベースを復元する方法について説明します。

警告

ディザスター リカバリーが発生した場合、master データベースが復元されるインスタンスは、元のインスタンスに対して、可能な限り完全一致に近い状態である必要があります。 少なくとも、この復旧インスタンスは、同じバージョン、エディション、パッチ レベルである必要があります。また、元のインスタンスと同じ機能が選択されており、同じ外部構成 (ホスト名、クラスター メンバーシップなど) を備えている必要があります。 それ以外の場合は、SQL Server インスタンスの動作が未定義となり、機能が一貫してサポートされなくなることに加え、実用性が保証されなくなります。

master データベースを復元するには

  1. サーバー インスタンスをシングル ユーザー モードで起動します。

    SQL Server は、-m パラメーターまたは-fスタートアップ パラメーターを使用して起動できます。 スタートアップ パラメーターの詳細については、「データベース エンジン サービスのスタートアップ オプション」を参照してください。

    コマンド プロンプトから次のコマンドを実行し、MSSQLXX.instance を適切なフォルダー名に置き換えてください。

    cd C:\Program Files\Microsoft SQL Server\MSSQLXX.instance\MSSQL\Binn
    sqlservr -c -f -s <instance> -mSQLCMD
    
    • この -mSQLCMD パラメーターにより、sqlcmd のみが SQL Server に接続できるようになります。
    • 既定のインスタンス名の場合は、-s MSSQLSERVER を使用します。
    • -c は、起動時間を短縮するために Service Control Manager をバイパスするアプリケーションとして SQL Server を起動します。

    master データベースが破損したために SQL Server インスタンスを起動できない場合は、まずシステム データベースを再構築する必要があります。 詳細については、「システム データベースの再構築」を参照してください。

  2. 別のコマンド プロンプト ウィンドウから SQLCMD を使用して SQL Server に接続する

    SQLCMD -S <instance> -E -d master
    
  3. masterデータベースの完全バックアップを復元するには、次の RESTORE DATABASE Transact-SQL ステートメントを使用します。

    RESTORE DATABASE master FROM  <backup_device>  WITH REPLACE
    

    REPLACE オプションは、指定したデータベースと同じ名前のデータベースが既に存在していても、SQL Server でデータベースを復元することを指定します。 既存のデータベースがある場合は削除されます。 シングル ユーザー モードでは、 sqlcmd ユーティリティで RESTORE DATABASE ステートメントを入力することをお勧めします。 詳細については、「 sqlcmd Utility の使用」を参照してください。

    重要

    master の復元後、SQL Server のインスタンスがシャットダウンされ、sqlcmd プロセスが終了します。 サーバー インスタンスを再起動する前に、シングル ユーザーの起動時のパラメーターを削除してください。 詳細については、「サーバー起動オプションを構成する (SQL Server 構成マネージャー)」を参照してください。

  4. スタートアップ パラメーターを使用せずに、通常はサービスとしてサーバー インスタンスを再起動します。

  5. 他のデータベースの復元、データベースのアタッチ、ユーザーの不一致の修正など、残りの復旧手順を続行します。

次の例では、既定のサーバー インスタンスで master データベースを復元します。 この例では、サーバー インスタンスが既にシングル ユーザー モードで実行されていることを前提としています。 この例は、 sqlcmd を起動し、ディスク デバイス RESTORE DATABASE から master データベースの完全バックアップを復元する Z:\SQLServerBackups\master.bakステートメントを実行します。

Note

名前付きインスタンスの場合、sqlcmd コマンドでは、-S<ComputerName>>\<InstanceName>> オプションを指定する必要があります。

C:\> sqlcmd  
1> RESTORE DATABASE master FROM DISK = 'Z:\SQLServerBackups\master.bak' WITH REPLACE;  
2> GO  

参照

データベースの全体復元 (単純復旧モデル)
データベースの全体復元 (完全復旧モデル)
孤立したユーザーのトラブルシューティング (SQL Server)
データベースのデタッチとアタッチ (SQL Server)
システム データベースの再構築
データベース エンジン サービスのスタートアップ オプション
SQL Server 構成マネージャー
システム データベースのバックアップと復元 (SQL Server)
RESTORE (Transact-SQL)