データベース ミラーリングとデータベース スナップショット (SQL Server)

適用対象 SQL Server

可用性を維持するために運用しているミラー データベースを利用して、レポート作成の負荷を軽減できます。 ミラー データベースをレポート作成に利用するには、ミラー データベースでデータベース スナップショットを作成し、クライアント接続要求を最新のスナップショットに出力します。 データベース スナップショットは、その作成時に存在していたソース データベースの静的な読み取り専用スナップショットであり、トランザクションに一貫性があります。 ミラー データベースにデータベース スナップショットを作成するには、データベースは同期済みのミラーリング状態になっている必要があります。

ミラー データベース自体とは異なり、データベース スナップショットはクライアントにアクセスできます。 ミラー サーバーがプリンシパル サーバーと通信している間は、レポート作成用クライアントに対してスナップショットに接続するように指示できます。 データベース スナップショットは静的なので、新しいデータは使用できないことに注意してください。 ユーザーが比較的新しいデータを使用できるようにするには、定期的に新しいデータベース スナップショットを作成し、アプリケーションが着信クライアント接続を最新のスナップショットに出力することが必要です。

新しいデータベース スナップショットはほとんど空ですが、時間が経過し、初めて更新されるデータベース ページが増えるにつれて拡張されます。 データベース上の各スナップショットはこのように段階的に拡張されるため、各データベース スナップショットは、通常のデータベースと同じ量のリソースを消費します。 ミラー サーバーおよびプリンシパル サーバーの構成によって異なりますが、1 つのミラー データベースに過度に多くのデータベース スナップショットを配置すると、プリンシパル データベース上のパフォーマンスが低下する可能性があります。 そのため、ミラー データベースには少数の比較的新しいスナップショットのみを保持することをお勧めします。 通常、置き換えるスナップショットを作成した後に、着信クエリを新しいスナップショットに再出力し、現在のクエリが完了した後に以前のスナップショットを削除する必要があります。

注意

データベース スナップショットの詳細については、「データベース スナップショット (SQL Server)」を参照してください。

役割の交代が発生した場合、データベースとそのスナップショットは、一時的にユーザーの接続を切断して、再起動されます。 その後、データベース スナップショットは、そのデータベース スナップショットが作成されたサーバー インスタンス上に残り、それが新しいプリンシパル データベースになります。 ユーザーは、フェールオーバーの発生後、このスナップショットを引き続き使用できます。 ただし、これによって、新しいプリンシパル サーバーにさらに負荷がかかります。 パフォーマンスを重視する環境の場合は、新しいミラー データベースが使用できるようになったらその新しいミラー データベース上にスナップショットを作成し、クライアントを新しいスナップショットに再出力し、以前のミラー データベースからすべてのデータベース スナップショットを削除することをお勧めします。

Note

頻繁にスケールアウトされる、レポート ソリューション専用サーバーの場合は、レプリケーションを検討してください。 詳細については、「 SQL Server Replication」を参照してください。

この例では、ミラー データベースでスナップショットを作成します。

データベース ミラーリング セッションのデータベースが AdventureWorks2022であるとします。 この例では、 AdventureWorks ドライブにある F データベースのミラー コピーでデータベース スナップショットを 3 つ作成します。 これらのスナップショットには、おおよその作成時間を識別するために AdventureWorks_0600AdventureWorks_1200、および AdventureWorks_1800 という名前が付けられています。

  1. AdventureWorks2022のミラーで最初のデータベース スナップショットを作成します。

    CREATE DATABASE AdventureWorks_0600  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP')  
       AS SNAPSHOT OF AdventureWorks2022  
    
  2. AdventureWorks2022のミラーで 2 番目のデータベース スナップショットを作成します。 まだ AdventureWorks_0600 を使用している場合は、このスナップショットを引き続き使用できます。

    CREATE DATABASE AdventureWorks_1200  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP')  
       AS SNAPSHOT OF AdventureWorks2022  
    

    この時点で、新しいクライアント接続をプログラムによって最新のスナップショットに出力できます。

  3. AdventureWorks2022のミラーで 3 番目のスナップショットを作成します。 まだ AdventureWorks_0600 または AdventureWorks_1200 を使用している場合は、このスナップショットを引き続き使用できます。

    CREATE DATABASE AdventureWorks_1800  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP')  
        AS SNAPSHOT OF AdventureWorks2022  
    

    この時点で、新しいクライアント接続をプログラムによって最新のスナップショットに出力できます。

Related Tasks

参照

データベース スナップショット (SQL Server)
データベース ミラーリング セッションへのクライアントの接続 (SQL Server)