次の方法で共有


データ変更の伝達方法をトランザクション アーティクルに設定する

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server 2014 のトランザクション アーティクルへのデータ変更の伝達方法を設定する方法について説明します。

既定では、トランザクション レプリケーションは、各アーティクルのストアド プロシージャのセットを使用してサブスクライバーに変更を反映します。 これらのプロシージャは、カスタム プロシージャに置き換えることができます。 詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。

このトピックについて

開始する前に

制限事項と制約条件

  • レプリケーションによって生成されたスナップショット ファイルを編集するときは、注意が必要です。 カスタム ストアド プロシージャでカスタム ロジックをテストしてサポートする必要があります。 Microsoft では、カスタム ロジックのサポートは提供していません。

SQL Server Management Studio の使用

アーティクルプロパティ - <アーティクル> ダイアログ ボックスの [プロパティ] タブで伝達方法を指定します。このプロパティは、[新しいパブリケーション ウィザード] と [パブリケーションのプロパティ - <パブリケーション>] ダイアログ ボックスで使用できます。 ウィザードの使用とダイアログ ボックスへのアクセスの詳細については、「 パブリケーションの作成 」および「パブリケーションの プロパティの表示と変更」を参照してください。

伝達方法を指定するには

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

  2. 強調表示 されたテーブル アーティクルの [プロパティの設定] をクリックします。

  3. [アーティクルのプロパティ - <Article>] ダイアログ ボックスの [ステートメント配信] セクションで、INSERT 配信形式UPDATE 配信形式、および DELETE 配信形式のメニューを使用して、各操作の伝達方法を指定します。

  4. OK をクリックします。

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

カスタム ストアド プロシージャを生成して使用するには

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

  2. 強調表示 されたテーブル アーティクルの [プロパティの設定] をクリックします。

    [アーティクルのプロパティ - <Article>] ダイアログ ボックスの [ステートメント配信] セクションで、適切な配信形式メニュー (INSERT 配信形式UPDATE 配信形式、または DELETE 配信形式) から CALL 構文を選択し、INSERT ストアド プロシージャDELETE ストアド プロシージャ、または UPDATE ストアド プロシージャで使用するプロシージャの名前を入力します。 CALL 構文の詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」の「ストアド プロシージャの呼び出し構文」セクションを参照してください。

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

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

  5. パブリケーションのスナップショットが生成されると、前の手順で指定した手順が含まれます。 プロシージャでは指定した CALL 構文が使用されますが、レプリケーションで使用される既定のロジックが含まれます。

    スナップショットが生成されたら、この記事が属するパブリケーションのスナップショット フォルダーに移動し、アーティクルと同じ名前の .sch ファイルを見つけます。 メモ帳または別のテキスト エディターを使用してこのファイルを開き、挿入、更新、または削除ストアド プロシージャの CREATE PROCEDURE コマンドを見つけて、プロシージャ定義を編集して、データ変更を反映するためのカスタム ロジックを指定します。 スナップショットを再生成する場合は、カスタム プロシージャを再作成する必要があります。

Transact-SQL の使用

トランザクション レプリケーションを使用すると、パブリッシャーからサブスクライバーへの変更の伝達方法を制御できます。この伝達方法は、アーティクルが作成され、後でレプリケーション ストアド プロシージャを使用して変更されたときにプログラムで設定できます。

パブリッシュされたデータの行に対して発生する DML (データ操作言語) 操作 (挿入、更新、または削除) の種類ごとに異なる伝達方法を指定できます。

詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。

Transact-SQL コマンドを使用してデータ変更を伝達するアーティクルを作成するには

  1. パブリッシャー側のパブリケーション データベースで、 sp_addarticleを実行します。 @publicationに属する刊行物の名前、@articleのための記事名、公開されるデータベースオブジェクトを@source_objectに指定し、また次のパラメーターの少なくとも1つにSQLの値を指定します。

    • @ins_cmd - INSERT コマンドのレプリケーションを制御します。

    • @upd_cmd - UPDATE コマンドのレプリケーションを制御します。

    • @del_cmd - DELETE コマンドのレプリケーションを制御します。

    上記のいずれかのパラメーターに SQL の値を指定すると、その種類のコマンドが適切な Transact-SQL コマンドとしてサブスクライバーにレプリケートされます。

    詳細については、 アーティクルの定義を参照してください。

データ変更を反映しないアーティクルを作成するには

  1. パブリッシャー側のパブリケーション データベースで、 sp_addarticleを実行します。 @publicationにアーティクルが属するパブリケーションの名前、 @articleのアーティクルの名前、 @source_objectにパブリッシュするデータベース オブジェクト、および次のパラメーターの少なくとも 1 つに NONE の 値を指定します。

    • @ins_cmd - INSERT コマンドのレプリケーションを制御します。

    • @upd_cmd - UPDATE コマンドのレプリケーションを制御します。

    • @del_cmd - DELETE コマンドのレプリケーションを制御します。

    上記のいずれかのパラメーターに 値 NONE を指定した場合、その種類のコマンドはサブスクライバーにレプリケートされません。

    詳細については、 アーティクルの定義を参照してください。

ユーザーが変更したカスタム ストアド プロシージャを使用してアーティクルを作成するには

  1. パブリッシャー側のパブリケーション データベースで、 sp_addarticleを実行します。 アーティクルが@publicationに属するパブリケーションの名前、@articleのアーティクルの名前、@source_object用にパブリッシュされるデータベース オブジェクト、0x02値を含む@schema_optionビットマスクの値 (カスタム ストアド プロシージャの自動生成を有効にする)、および次のパラメーターの少なくとも 1 つを指定します。

    • @ins_cmd - CALL sp_MSins_article_name の値を指定します。 ここで、article_name@articleに指定された値です。

    • @del_cmd - CALL sp_MSdel_article_name またはXCALL sp_MSdel_article_name の値を指定します。 ここで、article_name は _*@article** に指定された値です。

    • @upd_cmd - SCALL sp_MSupd_article_name、CALL sp_MSupd_article_name、XCALL sp_MSupd__article_name*、または MCALL sp_MSupd_article_name の値を指定します。ここで、article_name@articleに指定された値です。

    上記のコマンド パラメーターごとに、レプリケーションによって生成されるストアド プロシージャに独自の名前を指定できます。

    CALL、SCALL、XCALL、および MCALL 構文の詳細については、「 トランザクション アーティクルに対する変更の伝達方法の指定」を参照してください。

    詳細については、 アーティクルの定義を参照してください。

  2. スナップショットが生成されたら、この記事が属するパブリケーションのスナップショット フォルダーに移動し、アーティクルと同じ名前の .sch ファイルを見つけます。 Notepad.exeを使用してこのファイルを開き、ストアド プロシージャの挿入、更新、または削除の CREATE PROCEDURE コマンドを見つけて、プロシージャ定義を編集して、データ変更を伝達するためのカスタム ロジックを指定します。 詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。

カスタム ストアド プロシージャでカスタム スクリプトを使用してアーティクルを作成し、データの変更を反映するには

  1. パブリッシャー側のパブリケーション データベースで、 sp_addarticleを実行します。 アーティクルが@publicationに属するパブリケーションの名前、@articleのアーティクルの名前、@source_object用にパブリッシュされるデータベース オブジェクト、0x02値を含む@schema_optionビットマスクの値 (カスタム ストアド プロシージャの自動生成を有効にする)、および次のパラメーターの少なくとも 1 つを指定します。

    • @ins_cmd - CALL sp_MSins_article_name の値を指定します。 ここで、article_name@articleに指定された値です。

    • @del_cmd - CALL sp_MSdel_article_name または XCALL sp_MSdel_article_name の値を指定します。 ここで、article_name@articleに指定された値です。

    • @upd_cmd - SCALL sp_MSupd_article_name、CALL sp_MSupd_article_nameXCALL sp_MSupd_article_nameMCALL sp_MSupd_article_name の値を指定します。ここで、article_name@articleに指定された値です。

    上記のコマンド パラメーターごとに、レプリケーションによって生成されるストアド プロシージャに独自の名前を指定できます。

    CALL、SCALL、XCALL、および MCALL 構文の詳細については、「 トランザクション アーティクルに対する変更の伝達方法の指定」を参照してください。

    詳細については、 アーティクルの定義を参照してください。

  2. パブリッシャー側のパブリケーション データベースで、 ALTER PROCEDURE ステートメントを使用して sp_scriptpublicationcustomprocs を編集し、カスタム ストアド プロシージャの挿入、更新、および削除の CREATE PROCEDURE スクリプトを返します。 詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。

既存のアーティクルの変更を反映する方法を変更するには

  1. パブリッシャー側のパブリケーション データベースで、 sp_changearticleを実行します。 @publication@articleins_cmdupd_cmd、またはdel_cmdの値を@propertyに指定し、@valueに適切な伝達方法を指定します。

  2. 変更する伝達方法ごとに手順 1 を繰り返します。

こちらもご覧ください

トランザクション アーティクルの変更の反映方法を指定する
パブリケーションの作成