スナップショットを使用しないマージ サブスクリプションの初期化

注意注意

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。 新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。

マージ パブリケーションへのサブスクリプションは、既定ではスナップショットを使用して初期化されます。このスナップショットはスナップショット エージェントによって生成され、マージ エージェントによって適用されます。場合によっては、バックアップなどの別の方法でサブスクリプションを初期化できます。マージ レプリケーションは、フィルタ選択されたパブリケーションとフィルタ選択されていないパブリケーションの両方で、スナップショットを使用しないサブスクリプションの初期化をサポートします。このオプションは、フィルタ選択されていないパブリケーションや静的フィルタでより一般的に使用されます。パラメータ化されたフィルタを使用するパブリケーションは通常、サブスクライバのパーティションのスナップショットを使用して初期化されます。詳細については、「パラメータ化されたフィルタを使用したマージ パブリケーションのスナップショット」を参照してください。

できる限り、スナップショットを使用してサブスクリプションを初期化してください。特に次の状況では、スナップショットを使用してサブスクリプションを初期化するようにしてください。

  • パブリッシャで、列レベルの追跡を使用する場合、列フィルタ選択を使用する場合、またはスキーマに変更を加える場合。この場合、スナップショットを使用せずにサブスクリプションを初期化すると、収束できない可能性があります。

  • Web 同期を使用している場合、スナップショット ファイルがサブスクライバにレプリケートされますが、それらのファイルは使用されません。

  • サブスクリプションを再初期化する必要がある場合。

  • 事前計算済みパーティションを使用してパフォーマンスを向上させる必要がある場合。

バックアップまたは別の方法を使用してマージ サブスクリプションを初期化するには、次の手順を使用します。

  1. マージ レプリケーションで使用するテーブルに、rowguid および not null 列属性を持つ uniqueidentifier 列を追加します。

  2. サブスクライバの初期化に使用するデータベースのバックアップを実行します。

  3. パブリケーションを作成し、そのパブリケーションのスナップショットを生成します。スナップショットのパブリッシュされたテーブルからのスキーマおよびデータを使用しない場合でも、スナップショットは必要です。スナップショットには、レプリケーションに必要なシステム オブジェクトやメタデータが含まれているためです。これらのオブジェクトやメタデータは、初期同期中にサブスクライバにコピーされます。

  4. サブスクライバでバックアップを復元するか、別の方法を使用してデータをコピーします。バックアップを復元する場合は、KEEP_REPLICATION オプションは指定しないでください。このオプションは、復元中にレプリケーションの設定を維持するように設計されています。バックアップはパブリッシャからのものであるため、パブリッシャの設定をデータベースから削除する必要があります。初期同期後には、復元されたデータベースに必要なサブスクライバ設定が含まれます。

  5. サブスクリプションを作成し、サブスクリプションを手動で初期化するように指定します。

    注意注意

    スナップショットを使用せずにサブスクリプションを初期化する場合、パブリッシャで SQL Server サービスを実行する際に使用されるアカウントには、ディストリビュータのスナップショット フォルダに対する書き込み権限が必要です。権限の詳細については、「レプリケーション エージェントのセキュリティ モデル」を参照してください。

    詳細については、次のトピックを参照してください。

  6. マージ エージェントとの初期同期を実行して、レプリケーションに必要なオブジェクトおよびメタデータをコピーします。サブスクライバが同期されて、パブリッシャから増分変更を受けれ入れることができるようになります。