データベース スナップショットの制限事項と要件

データベース スナップショットでは、スナップショットの作成が開始された時点のデータベースから、コミットされていないトランザクションを差し引いた状態のデータベースがキャプチャされます。データベース スナップショットを使用する前に、スナップショット自体への制限だけではなく、データベース スナップショットがソース データベースとシステム環境に与える影響についても理解する必要があります。

重要な注意事項重要

データベース スナップショットは、Microsoft SQL Server 2005 Enterprise Edition 以降のバージョンでのみ使用できます。

ソース データベースへの制限

データベース スナップショットが存在する限り、スナップショットのソース データベースには次の制限事項があります。

  • データベースは削除、デタッチ、または復元できません。スナップショットを削除する方法の詳細については、「データベース スナップショットの削除」を参照してください。

    注意

    ソース データベースのバックアップは正常に実行されます。この動作はデータベース スナップショットの影響を受けません。

  • ソース データベースでの I/O が増加することによって、パフォーマンスが低下します。これは、ページが更新されるたびにスナップショットに対して copy-on-write (書き込まれるたびにコピーする) 操作が実行されることが原因です。

  • ソース データベースまたはスナップショットからはファイルを削除できません。

  • ソース データベースは、データベース ミラーリング セッション内のミラー データベースである場合を除き、オンラインである必要があります。

    注意

    すべての復旧モデルがデータベース スナップショットをサポートしています。

  • ソース データベースは、スケーラブルな共有データベースとして構成できません。

  • ミラー データベースにデータベース スナップショットを作成するには、データベースは同期済みのミラーリング状態になっている必要があります。

データベース スナップショットへの制限

データベース スナップショットには、次の制限事項が適用されます。

  • データベース スナップショットは、ソース データベースと同じサーバー インスタンスに作成および保持される必要があります。

  • データベース スナップショットは、常にデータベース全体に対して機能します。

  • データベース スナップショットはソース データベースに依存します。したがって、データベース スナップショットを使用してデータベースを以前の状態に戻す方法は、バックアップおよび復元の代替にはなりません。定期的なバックアップを毎回行うことが必要なことに変わりはありません。データベース スナップショットを作成した時点の状態にソース データベースを復元する必要がある場合は、そのためのバックアップ ポリシーを実装してください。

  • ソース データベースで更新されているページがスナップショットにプッシュされたときに、そのスナップショットによりディスク領域不足やその他のエラーが発生すると、そのスナップショットは問題ありに設定されるので、削除する必要があります。

  • スナップショットは読み取り専用です。

  • modelmaster、および tempdb の各データベースのスナップショットは禁止されています。

  • データベース スナップショット ファイルの仕様は変更できません。

  • データベース スナップショットからはファイルを削除できません。

  • データベース スナップショットはバックアップまたは復元できません。

  • データベース スナップショットはアタッチまたはデタッチできません。

  • FAT32 ファイル システムまたは未処理のパーティションにはデータベース スナップショットを作成できません。データベース スナップショットで使用されるスパース ファイルは NTFS ファイル システムによって提供されます。

  • データベース スナップショットではフルテキスト インデックスはサポートされていません。フルテキスト カタログはソース データベースから反映されません。

  • データベース スナップショットでは、スナップショットの作成時にソース データベースのセキュリティ制約が継承されます。スナップショットは読み取り専用なので、継承された権限は変更できません。また、ソース データベースに加えられた権限の変更は、既存のスナップショットには反映されません。

  • スナップショットには、常にスナップショットの作成時にファイル グループの状態が反映されます。オンライン ファイル グループはオンラインのまま、オフライン ファイル グループはオフラインのまま保持されます。詳細については、このトピックの後半に記載されている「オフライン ファイル グループを含むデータベース スナップショット」を参照してください。

  • ソース データベースが RECOVERY_PENDING になった場合、データベース スナップショットにアクセスできなくなる場合があります。ただし、ソース データベースの問題を解決した後は、スナップショットを再度利用できるようになります。

  • 元に戻す操作は、読み取り専用のファイル グループと圧縮されたファイル グループではサポートされていません。これらのいずれかの種類のファイル グループを含むデータベースを元に戻す操作は失敗します。元に戻す操作の詳細については、「データベース スナップショットへの復帰」を参照してください。

  • ログ配布構成では、データベース スナップショットを作成できるのはプライマリ データベースだけです。セカンダリ データベースでは作成できません。プライマリ サーバー インスタンスとセカンダリ サーバー インスタンスの役割を交代させる場合は、プライマリ データベースをセカンダリ データベースとしてセットアップする前にすべてのデータベース スナップショットを削除する必要があります。

  • データベース スナップショットは、スケーラブルな共有データベースとして構成できません。

  • FILESTREAM ファイル グループは、データベース スナップショットではサポートされていません。FILESTREAM ファイル グループがソース データベース内にある場合、それらはデータベース スナップショット内でオフラインとしてマークされ、データベースを元に戻す操作でデータベース スナップショットを使用できなくなります。

    注意

    データベース スナップショットで実行する SELECT ステートメントには、FILESTREAM 列を指定しないようにする必要があります。FILESTREAM 列が含まれていると、"データが移動されたので NOLOCK を使用したスキャンは続行できませんでした。" というエラー メッセージが返されます。

必要なディスク領域

データベース スナップショットはディスク領域を消費します。データベース スナップショットによってディスク領域が足りなくなった場合、そのデータベース スナップショットは問題ありに設定されるので、削除する必要があります (ただし、ソース データベースは影響を受けず、操作は正常に続行されます)。しかし、データベースの完全なコピーと比較すると、スナップショットでは領域が非常に効率的に使用されます。スナップショットにとって必要なのは、有効期間中に変化するページを格納する領域だけです。通常はスナップショットが保持されている時間は限られているので、サイズはそれほど大きな問題ではありません。

ただし、スナップショットを保持する時間が長くなると、空き領域が消費される可能性が高くなります。スパース ファイルを拡張できる最大サイズは、スナップショットの作成時の対応するソース データベース ファイルのサイズです。詳細については、「データベース スナップショットのスパース ファイルのサイズについて」を参照してください。

データベース スナップショットによってディスク領域が足りなくなった場合は、データベース スナップショットを削除する必要があります。データベース スナップショットの削除の詳細については、「データベース スナップショットの削除」を参照してください。

注意

ファイル領域を除いて、データベース スナップショットはデータベースとほぼ同じくらいのリソースを消費します。

オフライン ファイル グループを含むデータベース スナップショット

ソース データベース内のオフライン ファイル グループは、次の操作を実行しようとすると、データベース スナップショットに影響を与えます。

  • スナップショットを作成する

    ソース データベースに 1 つ以上のオフライン ファイル グループが含まれている場合、ファイル グループがオフラインのときは、スナップショットを正常に作成できます。オフライン ファイル グループの場合、スパース ファイルは作成されません。

    注意

    データベース スナップショットにとってのスパース ファイルの役割の詳細については、「データベース スナップショットの機能」を参照してください。

  • ファイル グループをオフラインにする

    ソース データベースのファイルはオフラインにできます。ただし、データベース スナップショットの作成時にオンラインだったファイル グループは、データベース スナップショットでもオンラインです。クエリされたデータがスナップショットの作成時以降に変更された場合、スナップショットから元のデータ ページにアクセスできます。ただし、ファイル グループ内の変更されていないデータへのアクセスにスナップショットを使用するクエリは、入出力 (I/O) エラーで失敗する可能性があります。

  • ファイル グループをオンラインにする

    データベース スナップショットが存在するデータベースでファイル グループをオンラインにすることはできません。スナップショットの作成時にオフラインだったファイル グループや、データベース スナップショットが存在している間にオフラインにしたファイル グループは、オフラインのままになります。これは、ファイルをオンラインに戻す際にファイルの復元が行われるためです。データベースにデータベース スナップショットが存在している場合、ファイルを復元することはできません。

  • ソース データベースをスナップショットに戻す

    ソース データベースをデータベース スナップショットに戻すには、スナップショットの作成時にオフラインだったファイル グループを除くすべてのファイル グループがオンラインである必要があります。