みなさん、こんにちは。今回はシステム データベースのリストア手順についてご紹介します。
システムデータベースを含めたバックアップを取得しておけば、SQL Server が稼働しているマシンが壊れてしまった場合に新しいマシンに SQL Server をインストールし、バックアップからリストアすることによって、SQL Server の環境を簡単に再構築することができます。
本手順は SQL Server 2012 を使用してシステム データベースとユーザー データベースをバックアップからリストアし、新しいマシンに SQL Server の環境を再構築する方法について記載しています。
■前提条件
1. オンライン バックアップ(完全バックアップ)を取得済みであること。
※本手順では、バックアップファイルを下記の名前で作成しています。
・master データベース: master.bak
・msdb データベース:msdb.bak
・model データベース:model.bak
・test データベース: test.bak ※ユーザー データベース
2. 新しいマシンは、旧いマシンと同じコンピューター名であること。
※コンピュータ名が異なるマシンへのシステム データベースの復元はサポートされていません。
本手順では、コンピューター名を ServerA としています。
3. 新しいマシンの SQL Server のインストール先のパスは、旧いマシンの SQL Server のインストール先のパスと同一であること。
4. 新しいマシンは旧いマシンと同じ Active Directory ドメインまたはワークグループ構成であること。
■手順
1. 新しいマシンに SQL Server をインストールします。
2. 新しいマシンの任意のフォルダに、旧マ��ンで取得したバックアップ ファイルをコピーします。
※本手順では、C:\work にバックアップ ファイルをコピーしています。
3. コマンド プロンプトを起動し、下記のコマンドを実行してユーザー データベース (test) をリストアします。
----------------------------------------------------------------------------------------
C:\> sqlcmd -E -SServerA
1> RESTORE DATABASE test FROM DISK = 'C:\work\test.bak'
2> go
----------------------------------------------------------------------------------------
※本手順では、既定のインスタンスに接続しています。名前付きインスタンスの場合は下記のように sqlcmd ユーティリティによる接続時にインスタンス名の指定が必要です。
----------------------------------------------------------------------------------------
C:\> sqlcmd -E -SServerA\instancename
----------------------------------------------------------------------------------------
4. 構成マネージャから SQL Server サービスを 停止します。SQL Server Agent サービスなど、SQL Server 関連の他のサービスが起動している場合は、それらのサービスもすべて停止します。
5. コマンド プロンプトを起動し、下記のコマンドを実行して SQL Server をシングルインスタンスモードで起動します。
-----------------------------------------------------------------------------------------------------------------
cd C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn
sqlservr -m -c
-----------------------------------------------------------------------------------------------------------------
※ 上記のパスは、SQL Server 2012 のデフォルトです。
※ -c オプションを使用することにより、 コマンド プロンプトからの SQL Server の起動に要する時間を短縮することができます。
※ 名前付きインスタンスとして SQL Server 2012 をインストールしている場合は、フォルダー パスの 「MSSQL11.MSSQLSERVER」 を 「MSSQL11.インスタンス名」 へ変更する必要があります。また、下記のように sqlservr アプリケーションの実行時に -s オプションを使用して、インスタンス名を指定する必要があります。
-----------------------------------------------------------------------------------------------------------------
sqlservr -m -sinstancename -c
-----------------------------------------------------------------------------------------------------------------
6. もう一つコマンドプロンプトを起動し、下記のコマンドを実行して master データベースをリストアします。
※WITH REPLACE オプションをつけて実行することにより、指定したデータベースと同じ名前のデータベースが既に存在していても、データベースとその関連ファイルが作成されます。
その場合、既存のデータベースは削除されます。
※リストアが成功した場合は、 SQL Server が自動的にシャットダウンされます。
----------------------------------------------------------------------------------------------------------------------
C:\> sqlcmd -E -SServerA
1> RESTORE DATABASE master FROM DISK = 'C:\work\master.bak' WITH REPLACE
2> go
------------------------------------------------------------------------------------------------------------------------
7. 構成マネージャから SQL Server サービスを起動します。
※SQL Server 関連の他のサービスは、ここではまだ起動しません。
8. コマンド プロンプトを起動し、下記のコマンドを実行して msdb データベースをリストアします。
------------------------------------------------------------------------------------------------------------------
C:\> sqlcmd -E -SServerA
1> RESTORE DATABASE msdb FROM DISK = 'C:\work\msdb.bak' WITH REPLACE
2> go
------------------------------------------------------------------------------------------------------------------
※ レプリケーションを利用している場合は、ここで distibution データベースをリストアします。
9. 続けて、下記のコマンドを実行して model データベースをリストアします。
--------------------------------------------------------------------------------------------------------------------
1> RESTORE DATABASE model FROM DISK = 'C:\work\model.bak' WITH REPLACE
2> go
--------------------------------------------------------------------------------------------------------------------
10. 構成マネージャから SQL Server サービスを再起動します。
11. 構成マネージャから SQL Server Agent サービスなど、SQL Server 関連の他のサービスを起動します。
※tempdb データベースは自動的に再構築されるので、復元は不要です。
以上で、システム データベースとユーザー データベースの復元は完了です。新しいマシンに SQL Server の環境が再構築されました。
<参考情報>
http://msdn.microsoft.com/ja-jp/library/ms190679(v=sql.105).aspx
master データベースを復元する方法 (Transact-SQL)