データベース スナップショットの一般的な使用方法

更新 : 2006 年 12 月 12 日

データベース スナップショットは、データベース (ソース データベース) の読み取り専用の静的ビューです。各データベース スナップショットは、そのスナップショットを作成した時点でのソース データベースとトランザクション的に一貫しています。データベース スナップショットを作成する場合、通常は、ソース データベースでトランザクションが開いた状態になっています。まず、開いているトランザクションをロールバックし、データベース スナップショットにおけるトランザクションの一貫性を確保する必要があります。

クライアントは、データベース スナップショットをクエリできます。したがって、スナップショットを作成した時点のデータに基づいてレポートを作成することができます。また、ソース データベースが後で破損した場合は、スナップショットを作成したときの状態にソース データベースを戻すこともできます。

ms175472.note(ja-jp,SQL.90).gif重要 :
データベース スナップショットは、Microsoft SQL Server 2005 Enterprise Edition でのみ使用できます。

データベース スナップショットを作成する理由は、次のとおりです。

  • レポートの生成に関する履歴データを維持できます。
    データベース スナップショットはデータベースの静的ビューなので、スナップショットを使用すると、特定の時点におけるデータへのアクセスを拡張できます。たとえば、特定の期間 (営業年度の四半期など) の終了時にデータベース スナップショットを作成しておけば、その後、これらのスナップショットに基づいて期間末レポートを作成できます。ディスク領域が十分にある場合は、期間末スナップショットを無期限に維持することも可能です。それによって、これらの期間の結果をクエリして、組織の業績を調べたりできるようになります。
  • 可用性の目的で維持しているミラー データベースを使用して、レポート作成に伴う負担を軽減できます。
    データベース スナップショットをデータベース ミラーリングと共に使用すると、ミラー サーバー上のデータをレポートに使用できるようになります。また、ミラー データベースに対してクエリを実行すると、プリンシパル サーバー上のリソースを解放することもできます。詳細については、「データベース ミラーリングとデータベース スナップショット」を参照してください。
  • 管理者によるエラーからデータを保護できます。
    一括更新などの大掛かりな更新を実行する場合は、事前にデータベース スナップショットを作成しておくと、データを保護することができます。スナップショットを使用すると、更新を間違えた場合でも、データベースをスナップショットに戻すことによってデータを復旧できます。この場合、データベースを元の状態に戻す方がバックアップから復元するよりも短時間で済みますが、後でロールフォワードすることはできません。
    詳細については、「データベース スナップショットへの復帰」を参照してください。
    ms175472.note(ja-jp,SQL.90).gif重要 :
    データベース スナップショットはソース データベースに依存します。したがって、データベース スナップショットを使用してデータベースを以前の状態に戻す方法は、バックアップおよび復元の代替にはなりません。定期的なバックアップを毎回行うことが必要なことに変わりはありません。データベース スナップショットを作成した時点の状態にソース データベースを復元する必要がある場合は、そのためのバックアップ ポリシーを実装してください。
  • ユーザーによるエラーからデータを保護できます。
    データベース スナップショットを定期的に作成すると、テーブルの削除など、ユーザーが重大な間違いを犯した場合にその影響を最小限に抑えることができます。ユーザーによる大半のエラーを認識し、それに対応できるよう、十分な長さの期間をカバーした一連のデータベース スナップショットを作成しておくと、データの保護レベルを高めることができます。たとえば、ディスク リソースに応じて、24 時間間隔で作成されるスナップショットを 6 ~ 12 個維持しておき、新しいスナップショットが作成されるたびに、最も古いスナップショットが削除されるようにすることができます。
    • ユーザー エラーが発生する直前のスナップショットにデータベースを戻すと、エラーから復旧することができます。この場合、データベースを元の状態に戻す方がバックアップから復元するよりも短時間で済みますが、後でロールフォワードすることはできません。
      スナップショットを戻す方法の詳細については、「データベース スナップショットへの復帰」を参照してください。
    • あるいは、スナップショットの情報を使用すると、削除されたテーブルやその他の紛失データを手動で再構築できる場合もあります。たとえば、スナップショットのデータをデータベースに一括コピーして、データベースにデータを手動でマージすることができます。
    ms175472.note(ja-jp,SQL.90).gifメモ :
    データベースごとに必要な同時実行スナップショットの数、新規スナップショットを作成する頻度、およびスナップショットを保持する期間は、データベース スナップショットをどのような理由で使用するかによって決まります。
  • テスト データベースの管理
    テスト環境でテスト プロトコルを繰り返し実行する場合は、各テスト ラウンドを開始する際に同一のデータをデータベースに格納しておくと便利です。アプリケーション開発者やテスタは、最初のラウンドを実行する前に、テスト データベースのデータベース スナップショットを作成できます。各テストの実行が完了したら、データベース スナップショットを戻すことにより、データベースを元の状態にすばやく戻すことができます。

参照

概念

データベース スナップショット

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 12 月 12 日

変更内容 :
  • 定期的にソース データベースのバックアップを作成する重要性を明記しました。

2005 年 12 月 5 日

新しい内容 :
  • データベース スナップショットが冗長ストレージではないこと、およびデータベースを保護するためにバックアップの実行が不可欠である説明を記載しました。
  • データベース スナップショットを使用する別の理由として、テスト データベースの管理を追加しました。