システム データベースのバックアップと復元 (SQL Server)
適用対象: SQL Server
SQL Serverは、サーバー・インスタンスの運用に不可欠なシステム データベースと呼ばれるシステム レベルのデータベースのセットを維持します。 システムデータベースのいくつかは、重要なアップデートのたびにバックアップしなければならない。 常にバックアップする必要があるシステム データベースには、msdb
、master
、 および model
があります。 サーバー インスタンス上のいずれかのデータベースでレプリケーションが使用されている場合は、distribution
システム データベースもバックアップする必要があります。 これらのシステム データベースのバックアップにより、ストレージ デバイスなどの損失などのシステム障害の発生後に、SQL Server システムを復元および復旧することができます。
次の表に、すべてのシステム データベースの概要を示します。
システム データベース | 説明 | バックアップは必要ですか? | 復旧モデル | コメント |
---|---|---|---|---|
master | SQL Server システムのすべてのシステム・レベル情報を記録するデータベース。 | はい | 簡易 | master は、ビジネス ニーズを満たすのに十分なデータ保護を行うために必要な頻度でバックアップします。 定期的なバックアップ スケジュールの設定をお勧めします。大量の更新の後で追加のバックアップを行ってこれを補完することもできます。 master のトランザクション ログ バックアップはサポートされていません。 |
model | SQL Serverインスタンス上に作成されるすべてのデータベースのテンプレート。 | はい | ユーザー設定 1 | model は、データベース オプションをカスタマイズした直後など、ビジネス ニーズに応じて必要な場合のみバックアップします。ベスト プラクティス: model については、必要なときにデータベースの完全バックアップのみを作成することをお勧めします。 model はサイズが小さく、変更頻度が低いため、ログのバックアップは必要ありません。 |
msdb | SQL Server エージェントがアラートやジョブのスケジューリング、オペレータの記録に使用するデータベース。 msdb には、バックアップと復元の履歴テーブルなどの履歴テーブルも含まれます。 |
はい | 単純 (既定) | msdb は更新するたびにバックアップします。 |
リソース データベース (RDB) | SQL Server に同梱されているすべてのシステムオブジェクトのコピーを含む読み取り専用のデータベース | いいえ | なし | Resource データベースにはコードのみが含まれ、mssqlsystemresource.mdf ファイル内に存在します。 したがって、SQL Serverはリソースデータベースをバックアップできません。注: mssqlsystemresource.mdf ファイルに対してファイル ベースまたはディスク ベースのバックアップを実行するには、このファイルをデータベース ファイルではなくバイナリ (.exe ) ファイルとして扱います。 しかし、バックアップに対してSQL Serverリストアを使用することはできません。 mssqlsystemresource.mdf のバックアップ コピーの復元は手動でのみ実行できます。また、現在の Resource データベースを古いバージョンや安全でない可能性のあるバージョンで上書きしないように注意する必要があります。 |
tempdb | 一時的な結果セットや生成途中の結果セットを保存するためのワークスペース。 このデータベースはSQL Serverのインスタンスが起動するたびに再作成されます。 サーバー インスタンスをシャットダウンするとき、tempdb 内のすべてのデータは完全に削除されます。 |
いいえ | 簡易 | tempdb システム データベースはバックアップできません。 |
[ディストリビューションの構成] | サーバーをレプリケーション ディストリビューターとして構成している場合に限り存在するデータベース。 あらゆる種類のレプリケーションのメタデータや履歴、およびトランザクション レプリケーションのトランザクションが保存されます。 | はい | 簡易 | distribution データベースをバックアップするタイミングの詳細については、「 レプリケートされたデータベースのバックアップと復元」を参照してください。 |
1 現在の復旧モデルを知るには、「データベースの復旧モデルの表示または変更 (SQL Server)」、または「sys.databases (Transact-SQL) 」を参照してください。
システム データベースの復元に関する制限
システムデータベースは、サーバー・インスタンスが現在実行しているSQL Serverのバージョンで作成されたバックアップからのみリストアできます。 たとえば、SQL Server 2016 (13.x) Service Pack 1 で実行されているサーバー インスタンス上のシステム データベースを復元するには、サーバー インスタンスが SQL Server 2016 (13.x) SP 1 にアップグレードされた後に作成されたデータベース バックアップを使用する必要があります。
データベースをリストアするには、SQL Serverのインスタンスが稼動している必要があります。 SQL Serverのインスタンスを起動するには、master
データベースにアクセスでき、少なくともその一部が使用可能であることが必要です。 master
が使用できない状態になった場合、このデータベースを次のいずれかの方法で使用できる状態に戻すことができます:
現在のデータベース バックアップから
master
を復元します。サーバー インスタンスを起動できる場合は、データベースの完全バックアップから
master
を復元できます。 詳細については、「master データベースの復元 (Transact-SQL)」を参照してください。完全に
master
をリビルドします。master
に深刻な破損があり、それが原因で SQL Server を起動できない場合、master
を再構築する必要があります。 詳細については、「システム データベースの再構築」を参照してください。重要
master
を再構築すると、すべてのシステム データベースが再構築されます。
状況によっては、model
データベースを復旧する問題は、システム データベースの再構築、あるいは model
データベースの mdf
ファイルや ldf
ファイルの置き換えが必要な場合があります。 詳細については、「システム データベースの再構築」を参照してください。
関連タスク
- データベースの完全バックアップの作成
- データベースの全体復元 (単純復旧モデル)
- master データベースの復元 (Transact-SQL)
- データベースの復旧モデルを表示または変更する(SQL Server)
- システム データベースの移動