次の方法で共有


[フィルタの生成]

[フィルタの生成] ダイアログ ボックスでは、マージ パブリケーション内の 1 つのテーブルに対して行フィルタを定義できます。これを行うと、レプリケーションによって、外部キー リレーションシップを介して関連付けられる他のテーブルにそのフィルタが自動的に拡張されます。たとえば、フランスの顧客データのみを含むように、フィルタを顧客テーブルに定義した場合、レプリケーションによってこのフィルタが拡張され、関連する受注テーブルや受注詳細テーブルには、フランスの顧客に関連する情報のみが含まれることになります。

オプション

このダイアログ ボックスには、テーブルに行フィルタを作成するための 3 段階のプロセスがあります。主キーと外部キーのリレーションシップを通じて、フィルタされたテーブルと関連するテーブルにフィルタが拡張されます。たとえば、3 つのテーブル、CustomerSalesOrderHeader、および SalesOrderDetail に、CustomerSalesOrderHeader のリレーションシップおよび SalesOrderHeaderSalesOrderDetail のリレーションシップが与えられている場合、Customer に行フィルタを適用すると、レプリケーションによってこのフィルタが SalesOrderHeaderSalesOrderDetail に拡張されます。

  1. [フィルタを適用するテーブルを選択します。]

    ドロップダウン リスト ボックスからテーブルを選択します。テーブルは、[アーティクル] ページで選択されている場合のみ、このリスト ボックスに表示されます。

  2. [フィルタ ステートメントを完成させ、サブスクライバが受け取るテーブル行を指定します。]

    新しいフィルタ ステートメントを定義します。[列] リスト ボックスには、[フィルタを適用するテーブルを選択します。] で選択したテーブルからパブリッシュするすべての列が一覧表示されます。[フィルタ ステートメント] テキスト領域には、次の形式の既定のテキストが表示されます。

    SELECT <published_columns> FROM [tableowner].[tablename] WHERE

    このテキストは変更できません。標準の Transact-SQL 構文を使用して、WHERE キーワードの後にフィルタ句を入力します。

    重要な注意事項重要

    パフォーマンスの理由により、パラメータ化された行フィルタ句の列名に、LEFT([MyColumn]) = SUSER_SNAME() などの関数を適用しないことをお勧めします。フィルタ句で HOST_NAME を使用していて、HOST_NAME 値を上書きする場合は、CONVERT を使用するデータ型の変換が必要になる可能性があります。このようなケースに対する推奨事項の詳細については、「パラメータ化された行フィルタ」トピックの「HOST_NAME() 値の上書き」を参照してください。

  3. [このテーブルからデータを取得するサブスクリプションの数を指定します。]

    MicrosoftSQL Server 2005 以降のバージョンのみです。マージ レプリケーションを使用して、お使いのデータとアプリケーションに最適なパーティションの種類を指定できます。[このテーブルの 1 行を 1 つのサブスクリプションのみに移動する] を選択すると、マージ レプリケーションでは、重複しないパーティションのオプションが設定されます。重複しないパーティションを事前計算済みパーティションと共に使用することで、パフォーマンスが向上します。事前計算済みパーティションに関連するアップロードの負担が、重複しないパーティションによって最小限に抑えられるためです。重複しないパーティションのパフォーマンス上の利点は、使用するパラメータ化されたフィルタと結合フィルタが複雑になるほど明確になります。このオプションを選択する場合は、データのパーティション分割によって、1 つの行が複数のサブスクライバにレプリケートされないことを確認する必要があります。詳細については、「パラメータ化された行フィルタ」トピックの「[パーティションのオプション] の設定」を参照してください。

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

ステートメントが解析された後で、レプリケーションによって必要な結合フィルタが作成されます。このウィザードが実行されているパブリッシャにディストリビュータを構成していない場合、ディストリビュータを構成するように要求されます。