マージ サブスクリプションの有効期限切れおよび変更のアップロード

マージ パブリケーションに対するサブスクリプションの有効期限が切れ、サブスクライバからパブリッシャへ変更をアップロードする場合には、アップロードを手動で行う必要があります。

説明

マージ レプリケーションでは、パブリケーション保有期間 (sp_addmergepublication (Transact-SQL)@retention および @retention_period_unit パラメータ) を使用して、サブスクリプションの有効期限を指定します。保有期間に達すると、パブリケーションおよびサブスクリプション データベースでメタデータをクリーンアップします。詳細については、「サブスクリプションの有効期限と非アクティブ化」を参照してください。サブスクライバの行に関連するメタデータがパブリッシャに存在しなくなるため、有効期限が切れたサブスクリプションから変更をアップロードすることはできません。

ユーザーの操作

パブリッシャに変更をアップロードするには、以下を実行します。

  1. tablediff ユーティリティを使用して、パブリッシャとサブスクライバとの間で異なっている行を特定します。レプリケートされたテーブルでこのユーティリティを使用する方法の詳細については、「レプリケートされたテーブルを比較して相違があるかどうかを確認する方法 (レプリケーション プログラミング)」を参照してください。

  2. 手動、または次のいずれかの方法で、サブスクライバから変更をアップロードします。

    • サブスクライバでスナップショットが適用されないように指定し、サブスクリプションを再作成します。詳細については、「スナップショットを使用しないマージ サブスクリプションの初期化」を参照してください。サブスクリプションを作成後、パブリッシャにアップロードする各行に対し、ダミー更新を行います。以下のいずれかの方法で手動でのダミー更新を実行してください。

      UPDATE Sales.SalesOrderHeader SET RevisionNumber = RevisionNumber WHERE SalesOrderID > 4100

      または、各行に対し、sp_mergedummyupdate を実行します。詳細については、「sp_mergedummyupdate (Transact-SQL)」を参照してください。

    • tablediff ユーティリティを使用して、データを集約させる Transact-SQL スクリプトを生成します。詳細については、「tablediff ユーティリティ」を参照してください。Transact-SQL スクリプトは、アップロード先 (この場合パブリッシャ) で集約されていないすべてのデータを上書きするため、このオプションは、パブリッシャでサブスクライバからのデータのアップロードがデータの保持より優先される場合にのみ使用します。