このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server 2014 のトランザクション アーティクルへのデータ変更の伝達方法を設定する方法について説明します。
既定では、トランザクション レプリケーションは、各アーティクルのストアド プロシージャのセットを使用してサブスクライバーに変更を反映します。 これらのプロシージャは、カスタム プロシージャに置き換えることができます。 詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。
このトピックについて
作業を開始する準備:
トランザクション アーティクルへのデータ変更の伝達方法を設定するには、次を使用します。
開始する前に
制限事項と制約条件
- レプリケーションによって生成されたスナップショット ファイルを編集するときは、注意が必要です。 カスタム ストアド プロシージャでカスタム ロジックをテストしてサポートする必要があります。 Microsoft では、カスタム ロジックのサポートは提供していません。
SQL Server Management Studio の使用
アーティクルプロパティ - <アーティクル> ダイアログ ボックスの [プロパティ] タブで伝達方法を指定します。このプロパティは、[新しいパブリケーション ウィザード] と [パブリケーションのプロパティ - <パブリケーション>] ダイアログ ボックスで使用できます。 ウィザードの使用とダイアログ ボックスへのアクセスの詳細については、「 パブリケーションの作成 」および「パブリケーションの プロパティの表示と変更」を参照してください。
伝達方法を指定するには
[パブリケーションの新規作成ウィザード] または [パブリケーション プロパティ - <パブリケーション>] ダイアログ ボックスの [記事] ページで、テーブルを選択し、[記事のプロパティ] をクリックします。
強調表示 されたテーブル アーティクルの [プロパティの設定] をクリックします。
[アーティクルのプロパティ - <Article>] ダイアログ ボックスの [ステートメント配信] セクションで、INSERT 配信形式、UPDATE 配信形式、および DELETE 配信形式のメニューを使用して、各操作の伝達方法を指定します。
OK をクリックします。
[ パブリケーションのプロパティ - <発行> ] ダイアログ ボックスを開いている場合は、[ OK] をクリックしてダイアログ ボックスを保存して閉じます。
カスタム ストアド プロシージャを生成して使用するには
[パブリケーションの新規作成ウィザード] または [パブリケーションのプロパティ - <発行>] ダイアログ ボックスの [アーティクル] ページで、テーブルを選択し、[アーティクルのプロパティ] をクリックします。
強調表示 されたテーブル アーティクルの [プロパティの設定] をクリックします。
[アーティクルのプロパティ - <Article>] ダイアログ ボックスの [ステートメント配信] セクションで、適切な配信形式メニュー (INSERT 配信形式、UPDATE 配信形式、または DELETE 配信形式) から CALL 構文を選択し、INSERT ストアド プロシージャ、DELETE ストアド プロシージャ、または UPDATE ストアド プロシージャで使用するプロシージャの名前を入力します。 CALL 構文の詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」の「ストアド プロシージャの呼び出し構文」セクションを参照してください。
OK をクリックします。
[ パブリケーションのプロパティ - <発行> ] ダイアログ ボックスを開いている場合は、[ OK] をクリックしてダイアログ ボックスを保存して閉じます。
パブリケーションのスナップショットが生成されると、前の手順で指定した手順が含まれます。 プロシージャでは指定した CALL 構文が使用されますが、レプリケーションで使用される既定のロジックが含まれます。
スナップショットが生成されたら、この記事が属するパブリケーションのスナップショット フォルダーに移動し、アーティクルと同じ名前の .sch ファイルを見つけます。 メモ帳または別のテキスト エディターを使用してこのファイルを開き、挿入、更新、または削除ストアド プロシージャの CREATE PROCEDURE コマンドを見つけて、プロシージャ定義を編集して、データ変更を反映するためのカスタム ロジックを指定します。 スナップショットを再生成する場合は、カスタム プロシージャを再作成する必要があります。
Transact-SQL の使用
トランザクション レプリケーションを使用すると、パブリッシャーからサブスクライバーへの変更の伝達方法を制御できます。この伝達方法は、アーティクルが作成され、後でレプリケーション ストアド プロシージャを使用して変更されたときにプログラムで設定できます。
注
パブリッシュされたデータの行に対して発生する DML (データ操作言語) 操作 (挿入、更新、または削除) の種類ごとに異なる伝達方法を指定できます。
詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。
Transact-SQL コマンドを使用してデータ変更を伝達するアーティクルを作成するには
パブリッシャー側のパブリケーション データベースで、 sp_addarticleを実行します。 @publicationに属する刊行物の名前、@articleのための記事名、公開されるデータベースオブジェクトを@source_objectに指定し、また次のパラメーターの少なくとも1つにSQLの値を指定します。
@ins_cmd - INSERT コマンドのレプリケーションを制御します。
@upd_cmd - UPDATE コマンドのレプリケーションを制御します。
@del_cmd - DELETE コマンドのレプリケーションを制御します。
注
上記のいずれかのパラメーターに SQL の値を指定すると、その種類のコマンドが適切な Transact-SQL コマンドとしてサブスクライバーにレプリケートされます。
詳細については、 アーティクルの定義を参照してください。
データ変更を反映しないアーティクルを作成するには
パブリッシャー側のパブリケーション データベースで、 sp_addarticleを実行します。 @publicationにアーティクルが属するパブリケーションの名前、 @articleのアーティクルの名前、 @source_objectにパブリッシュするデータベース オブジェクト、および次のパラメーターの少なくとも 1 つに NONE の 値を指定します。
@ins_cmd - INSERT コマンドのレプリケーションを制御します。
@upd_cmd - UPDATE コマンドのレプリケーションを制御します。
@del_cmd - DELETE コマンドのレプリケーションを制御します。
注
上記のいずれかのパラメーターに 値 NONE を指定した場合、その種類のコマンドはサブスクライバーにレプリケートされません。
詳細については、 アーティクルの定義を参照してください。
ユーザーが変更したカスタム ストアド プロシージャを使用してアーティクルを作成するには
パブリッシャー側のパブリケーション データベースで、 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 構文の詳細については、「 トランザクション アーティクルに対する変更の伝達方法の指定」を参照してください。
詳細については、 アーティクルの定義を参照してください。
スナップショットが生成されたら、この記事が属するパブリケーションのスナップショット フォルダーに移動し、アーティクルと同じ名前の .sch ファイルを見つけます。 Notepad.exeを使用してこのファイルを開き、ストアド プロシージャの挿入、更新、または削除の CREATE PROCEDURE コマンドを見つけて、プロシージャ定義を編集して、データ変更を伝達するためのカスタム ロジックを指定します。 詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。
カスタム ストアド プロシージャでカスタム スクリプトを使用してアーティクルを作成し、データの変更を反映するには
パブリッシャー側のパブリケーション データベースで、 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 構文の詳細については、「 トランザクション アーティクルに対する変更の伝達方法の指定」を参照してください。
詳細については、 アーティクルの定義を参照してください。
パブリッシャー側のパブリケーション データベースで、 ALTER PROCEDURE ステートメントを使用して sp_scriptpublicationcustomprocs を編集し、カスタム ストアド プロシージャの挿入、更新、および削除の CREATE PROCEDURE スクリプトを返します。 詳細については、「 トランザクション アーティクルの変更の伝達方法を指定する」を参照してください。
既存のアーティクルの変更を反映する方法を変更するには
パブリッシャー側のパブリケーション データベースで、 sp_changearticleを実行します。 @publication、@article、ins_cmd、upd_cmd、またはdel_cmdの値を@propertyに指定し、@valueに適切な伝達方法を指定します。
変更する伝達方法ごとに手順 1 を繰り返します。