次の方法で共有


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

可用性のために維持しているミラー データベースを利用して、レポートをオフロードできます。 ミラー データベースをレポートに使用するには、ミラー データベースにデータベース スナップショットを作成し、クライアント接続要求を最新のスナップショットに直接指定します。 データベース スナップショットは、スナップショットの作成時に存在していたソース データベースの静的な読み取り専用のトランザクション整合性スナップショットです。 ミラー データベースにデータベース スナップショットを作成するには、データベースが同期ミラーリング状態である必要があります。

ミラー データベース自体とは異なり、データベース スナップショットにはクライアントからアクセスできます。 ミラー サーバーがプリンシパル サーバーと通信している限り、レポート クライアントにスナップショットへの接続を指示できます。 データベース スナップショットは静的であるため、新しいデータは使用できません。 ユーザーが比較的新しいデータを使用できるようにするには、新しいデータベース スナップショットを定期的に作成し、アプリケーションが受信クライアント接続を最新のスナップショットに転送する必要があります。

新しいデータベース スナップショットはほとんど空ですが、初めて更新されるデータベース ページが増えるにつれて、時間の経過と同時に増加します。 データベース上のすべてのスナップショットはこの方法で増分的に増加するため、各データベース スナップショットは通常のデータベースと同じ量のリソースを消費します。 ミラー サーバーとプリンシパル サーバーの構成によっては、ミラー データベースに過剰な数のデータベース スナップショットがあると、プリンシパル データベースのパフォーマンスが低下する可能性があります。 そのため、ミラー データベースには比較的新しいスナップショットを少数保持することをお勧めします。 通常、置換スナップショットを作成した後は、受信クエリを新しいスナップショットにリダイレクトし、現在のクエリの完了後に以前のスナップショットを削除する必要があります。

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

ロールの切り替えが行われると、データベースとそのスナップショットが再起動され、ユーザーが一時的に切断されます。 その後、データベース スナップショットは作成されたサーバー インスタンスに残り、新しいプリンシパル データベースになります。 ユーザーは、フェールオーバー後もスナップショットを引き続き使用できます。 ただし、これにより、新しいプリンシパル サーバーに追加の負荷が発生します。 お使いの環境でパフォーマンスが問題になる場合は、新しいミラー データベースが使用可能になったときにスナップショットを作成し、クライアントを新しいスナップショットにリダイレクトし、以前のミラー データベースからすべてのデータベース スナップショットを削除することをお勧めします。

適切にスケールアウトする専用のレポート ソリューションについては、レプリケーションを検討してください。 詳細については、「 SQL Server レプリケーション」を参照してください。

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

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

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

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

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

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

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

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

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

関連タスク

こちらもご覧ください

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