次の方法で共有


マージ アーティクル間の一連の結合フィルタを自動的に生成する方法 (SQL Server Management Studio)

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

注意

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

結合フィルタは、一連のテーブルに対して手動で作成できます。また、テーブルに定義された外部キーと主キーのリレーションシップに基づいてレプリケーションによって自動的に生成することもできます。手動による結合フィルタ作成の詳細については、「マージ アーティクル間の結合フィルタを定義および変更する方法 (SQL Server Management Studio)」を参照してください。

マージ アーティクル間の一連の結合フィルタを自動的に生成するには

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

    注意

    フィルタを自動的に生成すると、現在パブリケーション内にある行フィルタまたは結合フィルタがすべて削除されます。一連のフィルタを自動的に生成した後でフィルタを追加できます。

  2. [フィルタの生成] ダイアログ ボックスの処理に従って行フィルタを作成します。次に、主キーと外部キーのリレーションシップによって、フィルタ選択されるテーブルに関係する各テーブルに行フィルタが拡張されます。

    1. ドロップダウン リスト ボックスからフィルタ選択するテーブルを選択します。

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

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

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

      既定のテキストは変更できません。静的行フィルタのフィルタ句を入力するか、標準の SQL 構文を使用して WHERE キーワードの後にパラメータ化された行フィルタを入力してください。パラメータ化された行フィルタの完全なフィルタ句は次のようになります。

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

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

    3. フィルタ オプションを指定します。

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

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

    指定したフィルタは解析され、SELECT 句で選択されたテーブルに対して実行されます。フィルタ ステートメントに構文エラーなどの問題があると通知され、フィルタ ステートメントを編集できます。

    ステートメントの解析が終了すると、レプリケーションによって必要な結合フィルタが作成され、[テーブル行のフィルタ選択] ページ、または [行のフィルタ選択] ページの [フィルタ選択されたテーブル] ペインに表示されます。パブリケーションの新規作成ウィザードでフィルタを生成し、このウィザードの実行対象であるパブリッシャのディストリビュータをまだ構成していない場合は、構成するように要求されます。

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

自動的に生成されたフィルタを変更するには

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

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

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

自動的に生成されたフィルタを削除するには

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