次の方法で共有


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 ステートメントTransact-SQL ステートメントを使用します。

    RESTORE DATABASE master FROM <backup_device> WITH REPLACE;
    

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

    重要

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

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

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

例示

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

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

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