適用対象:SQL Server
この記事では、データベースの完全バックアップから master
データベースを復元する方法について説明します。
警告
ディザスター リカバリーが発生した場合、master
データベースが復元されるインスタンスは、元のインスタンスに対して、可能な限り完全一致に近い状態である必要があります。 少なくとも、この復旧インスタンスは、同じバージョン、エディション、パッチ レベルである必要があります。また、元のインスタンスと同じ機能が選択されており、同じ外部構成 (ホスト名、クラスター メンバーシップなど) を備えている必要があります。 そうしないと、機能のサポートに一貫性がなく、未定義の SQL Server インスタンスの動作が発生する可能性があり、実行可能であるとは限りません。
master
データベースを復元する
サーバー インスタンスをシングル ユーザー モードで起動します。
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 インスタンスを起動できない場合は、まずシステム データベースを再構築する必要があります。 詳細については、「 システム データベースの再構築」を参照してください。別のコマンド プロンプト ウィンドウから sqlcmd を使用して SQL Server に接続します。
sqlcmd -S <instance> -E -d master
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 構成マネージャー: サーバーのスタートアップ オプションを構成する」を参照してください。スタートアップ パラメーターを使用せずに、通常はサービスとしてサーバー インスタンスを再起動します。
他のデータベースの復元、データベースのアタッチ、ユーザーの不一致の修正など、残りの復旧手順を続行します。
例示
次の例では、既定のサーバー インスタンスで 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