パラメータ化されたフィルタを使用してマージ レプリケーションのパーティションを管理する方法 (レプリケーション Transact-SQL プログラミング)
パラメータ化された行フィルタを使用して、重複しないパーティションを生成できます。パーティションを制限することで、特定のパーティションを 1 つのサブスクリプションだけが受け取るようにできます。このような場合、サブスクリプションの数が多いと多数のパーティションが生成されるため、それと同数のパーティション スナップショットが必要になります。詳細については、「パラメーター化された行フィルター」を参照してください。パラメータ化されたフィルタを使ってパブリケーションをより詳細に管理するために、プログラムからレプリケーション ストアド プロシージャを使用して既存のパーティションを列挙できます。既存のパーティションの作成と削除も行えます。既存パーティションに関する次の情報も取得できます。
パーティションのフィルタ選択の方法 (SUSER_SNAME (Transact-SQL) または HOST_NAME (Transact-SQL) を使用)
パーティション スナップショットを生成するジョブの名前
パーティション スナップショット ジョブが最後に実行された時刻
新しいサブスクリプションが初期化されたときに、2 つの部分から構成されるスナップショットの 2 番目の部分は要求時に生成できますが、下記の手順を実行することで、このスナップショットの生成方法を制御し、都合のよいときにこのスナップショットをあらかじめ生成できます。詳細については、「パラメータ化されたフィルタを使用したマージ パブリケーションのスナップショット」を参照してください。
![]() |
---|
パーティションが重複しないサブスクリプションを生成するパラメータ化されたフィルタがパブリケーションに含まれるとき、サブスクリプションが失われて再作成する必要がある場合には、サブスクライブ先のパーティションを削除し、そのサブスクリプションを再作成した後、そのパーティションを再作成する必要があります。パブリケーション作成スクリプトが生成されると、レプリケーションによって既存のサブスクライバ パーティション用の作成スクリプトが生成されます。詳細については、「レプリケーションのスクリプト作成」を参照してください。 |
既存のパーティションに関する情報を表示するには
- パブリッシャ側のパブリケーション データベースに対して、sp_helpmergepartition (Transact-SQL) を実行します。パブリケーションの名前を @publication に指定します。(省略可) 1 つのフィルタ条件に基づく情報のみが返されるように、@suser_sname または @host_name を指定します。
新しいパーティションを定義して、新しいパーティション スナップショットを生成するには
パブリッシャ側のパブリケーション データベースに対して、sp_addmergepartition (Transact-SQL) を実行します。@publication にパブリケーションの名前を指定し、次のいずれかのパラメータに、パーティションを定義するパラメータ値を指定します。
@suser_sname - SUSER_SNAME (Transact-SQL) から返される値でパラメータ化されたフィルタを定義する場合。
@host_name - HOST_NAME (Transact-SQL) から返される値でパラメータ化されたフィルタを定義する場合。
この新しいパーティションのパラメータ化スナップショットを作成し、初期化します。詳細については、「パラメータ化されたフィルタを使用してマージ レプリケーションのスナップショットを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
パーティションを削除するには
パブリッシャ側のパブリケーション データベースに対して、sp_dropmergepartition (Transact-SQL) を実行します。@publication にパブリケーションの名前を指定し、次のいずれかのパラメータに、パーティションを定義するパラメータ値を指定します。
@suser_sname - SUSER_SNAME (Transact-SQL) から返される値でパラメータ化されたフィルタを定義する場合。
@host_name - HOST_NAME (Transact-SQL) から返される値でパラメータ化されたフィルタを定義する場合。
これにより、そのパーティションのスナップショット ジョブおよびすべてのスナップショット ファイルも削除されます。