次の方法で共有


結合の追加と編集

[結合の追加] ダイアログ ボックスおよび [結合の編集] ダイアログ ボックスでは、マージ パブリケーションに使用する結合フィルターの追加と編集を行えます。

注意

既存のパブリケーションのフィルターを編集するには、パブリケーションの新しいスナップショットが必要です。 パブリケーションにサブスクリプションが存在する場合、このサブスクリプションを再初期化する必要があります。 プロパティの変更の詳細については、「パブリケーションおよびアーティクルのプロパティの変更」を参照してください。

結合フィルターを使用すると、パブリケーションにおける関連するテーブルのフィルター方法に基づいて、テーブルにフィルターを適用できます。 一般的に、親テーブルにはパラメーター化された行フィルターが適用されます。次に、テーブル間の結合を定義するときとほぼ同じ方法で、1 つ以上の結合フィルターを定義します。 この結合フィルターにより、関連するテーブル内のデータが結合フィルター句と一致する場合にのみレプリケートされるように、行フィルターが拡張されます。

通常、結合フィルターは適用先のテーブルに定義されている主キー/外部キーのリレーションシップに従いますが、これに厳密に限定されてはいません。 結合フィルターは、2 つのアーティクル テーブル内の関連するデータを比較する、任意のロジックに基づくことができます。

重要な注意事項重要

結合フィルターに使用できるテーブルの数に制限はありませんが、多数のテーブルをフィルターに使用すると、マージ処理中のパフォーマンスに影響する場合があります。 5 個以上のテーブルを使用する結合フィルターを生成する場合、小さいテーブルや変更を受けないテーブル、プライマリ参照テーブルにはフィルターを適用しないなどの方法も検討してみてください。 サブスクライバーの間で分割する必要があるテーブル間にのみ、結合フィルターを使用してください。

オプション

このダイアログ ボックスでは、3 つの手順で 2 つのテーブル間の結合フィルターを作成します。 結合フィルターを複数作成するには、このダイアログ ボックスの手順を複数回繰り返す必要があります。

  1. [フィルター選択されたテーブルを確認し、結合テーブルを選択します]

    • 新しい結合を追加する場合、[フィルター選択されたテーブル] テキスト ボックス内のテーブルが適切かどうか確認します。適切でない場合には [キャンセル] をクリックし、[テーブル行のフィルター選択] ページで正しいテーブルを選択して、[結合の追加] をクリックし、このダイアログ ボックスに戻ります。 次に、[結合テーブル] ドロップダウン リスト ボックスでテーブルを選択します。

    • 既存の結合を編集する場合、テーブル名は既に指定されており、変更できません。 結合に使用されるテーブルを変更するには、[テーブル行のフィルター選択] ページで既存の結合フィルターを削除して、別のテーブルの間に新しい結合を作成する必要があります。

  2. [JOIN ステートメントを作成します]

    • 新しい結合を追加する場合、[ビルダーを使用してステートメントを作成する] または [JOIN ステートメントを手動で作成する] を選択します。 結合を手動で作成する場合、ビルダーは使用できません。

      ビルダーの使用を選択した場合、グリッド内の列 ([結合][フィルター選択されたテーブルの列][演算子][結合テーブルの列]) を使用して JOIN ステートメントを作成します。 グリッド内の各列にはドロップダウン リスト ボックスがあり、これを使用して 2 つの列と演算子 ([=][<>][<=][<][>=][>][like]) を選択できます。 結果は [プレビュー] テキスト領域に表示されます。 結合に列が 2 組以上使用される場合には、[結合] 列で結合 ([AND] または [OR]) を選択し、2 つの列と別の演算子を入力します。

      ステートメントを手動で作成する場合、[JOIN ステートメント] テキスト領域に JOIN ステートメントを入力します。 [フィルター選択されたテーブルの列] リスト ボックスと [結合テーブルの列] リスト ボックスを使用して、列を [結合テーブルの列] テキスト領域にドラッグ アンド ドロップします。

    • 既存の結合を編集する場合、手動で編集する必要があります。

  3. [結合オプションを指定します]

    • フィルター選択するテーブル内で結合する列が一意な場合、[一意キー : フィルター選択されたテーブルの 1 つの行に関連する結合テーブル内の行 (一対一または一対多の関係)] を選択します。 列が一意の場合、特別なパフォーマンスの最適化機能をマージ処理で利用できます。

      注記注意

      このオプションを選択すると、結合フィルターにおける子テーブルと親テーブルのリレーションシップが一対一または一対多となるように指定されます。 親テーブル内の結合する列に一意性を保証する制約がある場合にのみ、このオプションを選択してください。 このオプションを適切に設定しなかった場合、データを収束できない可能性があります。

    • Microsoft SQL Server 2005 以降のバージョンのみ。 既定で、マージ レプリケーションでは同期中に行ごとに変化が処理されます。 関連する変更をまとめて処理するには、[論理レコード : フィルター選択されたテーブルと結合テーブルの関連する変更を同期時にトランザクションとして扱う] を選択します。 このオプションは、論理レコードを使用するために必要なアーティクルとパブリケーションの要件が満たされている場合にのみ使用できます。 詳細については、「論理レコードによる関連行への変更のグループ化」の「論理レコードによる関連行への変更のグループ化」を参照してください。

フィルターを追加または編集した後で [OK] をクリックすると、変更が保存され、ダイアログ ボックスが閉じます。 指定したフィルターは、SELECT 句のテーブルに対して解析され、実行されます。 フィルター ステートメントに構文エラーなどの問題がある場合には通知され、フィルター ステートメントを編集することができます。

関連項目

概念

パブリケーションの作成

パブリケーション プロパティの表示および変更

パブリッシュされたデータのフィルター選択

結合フィルター

パラメーター化された行フィルター

データとデータベース オブジェクトのパブリッシュ