次の方法で共有


パラメータ化されたフィルタを使用してマージ パブリケーションのパーティションを管理する方法 (RMO プログラミング)

パラメータ化されたフィルタを使ってパブリケーションをより適切に管理するために、レプリケーション管理オブジェクト (RMO) を使用して、新しいサブスクライバ パーティションの作成、既存のサブスクライバ パーティションの列挙、およびサブスクライバの削除をプログラムで行うことができます。サブスクライバ パーティションを作成する方法の詳細については、「パラメータ化されたフィルタを使用してマージ パブリケーションのスナップショットを作成する方法 (RMO プログラミング)」を参照してください。既存のパーティションに関する次の情報を取得できます。

  • パーティションの基になる値およびフィルタ関数。

  • サブスクライバのパラメータ化されたスナップショットを生成するジョブの名前。

  • パラメータ化されたスナップショット ジョブが最後に実行された日時。

注意

パブリケーションが、重複しないパーティションを含むサブスクリプションを返すパラメータ化されたフィルタを持つ場合に、特定のサブスクリプションが失われて再作成が必要になったときは、サブスクライブされたパーティションを削除し、サブスクリプションを再作成してから、パーティションを再作成する必要があります。詳細については、「パラメーター化された行フィルター」を参照してください。パブリケーション作成スクリプトが生成されると、レプリケーションによって既存のサブスクライバ パーティション用の作成スクリプトが生成されます。詳細については、「レプリケーションのスクリプト作成」を参照してください。

既存のパーティションに関する情報を表示するには

  1. ServerConnection クラスを使用して、パブリッシャへの接続を作成します。

  2. MergePublication クラスのインスタンスを作成します。パブリケーションの Name プロパティおよび DatabaseName プロパティを設定し、ConnectionContext プロパティに手順 1. で作成した ServerConnection を設定します。

  3. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。このメソッドが false を返す場合、手順 2. でパブリケーション プロパティを不適切に設定したか、パブリケーションが存在していません。

  4. EnumMergePartitions メソッドを呼び出して、結果を MergePartition オブジェクトの配列に渡します。

  5. 配列内の各 MergePartition オブジェクトに対して、必要なプロパティを取得します。

既存のパーティションを削除するには

  1. ServerConnection クラスを使用して、パブリッシャへの接続を作成します。

  2. MergePublication クラスのインスタンスを作成します。パブリケーションの Name プロパティおよび DatabaseName プロパティを設定し、ConnectionContext プロパティに手順 1. で作成した ServerConnection を設定します。

  3. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。このメソッドが false を返す場合、手順 2. でパブリケーション プロパティを不適切に設定したか、パブリケーションが存在していません。

  4. EnumMergePartitions メソッドを呼び出して、結果を MergePartition オブジェクトの配列に渡します。

  5. 配列内の各 MergePartition オブジェクトに対して、パーティションを削除するかどうかを決定します。この決定は、通常、DynamicFilterLogin プロパティまたは DynamicFilterHostName プロパティの値に基づいて行います。

  6. 手順 2. の MergePublication オブジェクトで、RemoveMergePartition メソッドを呼び出します。手順 5. の MergePartition オブジェクトを渡します。

  7. 削除する各パーティションに対して手順 6. を繰り返します。