マージ アーティクルのパラメータ化された行フィルタを定義および変更する方法 (SQL Server Management Studio)

パブリケーションの新規作成ウィザードの [テーブル行のフィルタ選択] ページ、または [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [行のフィルタ選択] ページで、パラメータ化された行フィルタを定義、変更、または削除します。このウィザードの使用とダイアログ ボックスへのアクセスの詳細については、「パブリケーションを作成してアーティクルを定義する方法 (SQL Server Management Studio)」および「パブリケーションとアーティクルのプロパティを表示および変更する方法 (SQL Server Management Studio)」を参照してください。

注意注意

パブリケーションに対するサブスクリプションを初期化した後に、[パブリケーションのプロパティ - <Publication>] ダイアログ ボックスでパラメータ化された行フィルタを追加、変更、または削除した場合は、変更を行った後で、新しいスナップショットを生成し、すべてのサブスクリプションを再初期化する必要があります。プロパティ変更の必要条件の詳細については、「パブリケーションおよびアーティクルのプロパティの変更」を参照してください。

パラメータ化された行フィルタを定義するには

  1. パブリケーションの新規作成ウィザードの [テーブル行のフィルタ選択] ページ、または [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [行のフィルタ選択] ページで、[追加] をクリックし、次に [フィルタの追加] をクリックします。

  2. [フィルタの追加] ダイアログ ボックスで、ドロップダウン リスト ボックスからフィルタ選択するテーブルを選択します。

  3. [フィルタ ステートメント] テキスト ボックスで、フィルタ ステートメントを作成します。テキスト領域に直接入力することも、[列] ボックスから列をドラッグ アンド ドロップすることもできます。

    • [フィルタ ステートメント] テキスト領域には、次の形式の既定のテキストが含まれています。

      SELECT <published_columns> FROM [tableowner].[tablename] WHERE
      
    • 既定のテキストは変更できません。標準の SQL 構文を使用して WHERE キーワードの後にフィルタ句を入力してください。パラメータ化されたフィルタには、システム関数 HOST_NAME() および SUSER_SNAME() の呼び出し、あるいは、これらの関数のいずれかまたは両方を参照するユーザー定義関数の呼び出しが含まれています。パラメータ化された行フィルタの完全なフィルタ句の例を次に示します。

      SELECT <published_columns> FROM [HumanResources].[Employee] WHERE LoginID = SUSER_SNAME()
      

      WHERE 句には、2 つの部分で構成されている名前を使用する必要があります。3 つまたは 4 つの部分で構成されている名前の使用はサポートされていません。

      重要な注意事項重要

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

  4. 複数のサブスクライバ間でのデータの共有方法に一致するオプションを選択します。

    • [このテーブルの 1 行を複数のサブスクリプションに移動する]

    • [このテーブルの 1 行を 1 つのサブスクリプションのみに移動する]

    [このテーブルの 1 行を 1 つのサブスクリプションのみに移動する] を選択すると、マージ レプリケーションは、格納および処理するメタデータを減らすことにより、パフォーマンスを最適化できます。ただし、データのパーティション分割によって、1 つの行が複数のサブスクライバにレプリケートされないことを確認する必要があります。詳細については、「パラメータ化された行フィルタ」の「[パーティションのオプション] の設定」を参照してください。

  5. [OK] をクリックします。

  6. [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスが表示されている場合は、[OK] をクリックして保存し、ダイアログ ボックスを閉じます。

パラメータ化された行フィルタを変更するには

  1. パブリケーションの新規作成ウィザードの [テーブル行のフィルタ選択] ページ、または [パブリケーションのプロパティ - <Publication>][行のフィルタ選択] ページで、[フィルタ選択されたテーブル] ペイン内のフィルタを選択し、[編集] をクリックします。

  2. [フィルタの編集] ダイアログ ボックスで、フィルタを変更します。

  3. [OK] をクリックします。

パラメータ化された行フィルタを削除するには

  • パブリケーションの新規作成ウィザードの [テーブル行のフィルタ選択] ページ、または [パブリケーションのプロパティ - <Publication>][行のフィルタ選択] ページで、[フィルタ選択されたテーブル] ペイン内のフィルタを選択し、[削除] をクリックします。