データの変更をトランザクション アーティクルに反映する方法の設定
このトピックでは、SQL Server 2012 で SQL Server Management Studio または Transact-SQL を使用して、トランザクション アーティクルへのデータの変更の反映方法を設定する方法について説明します。
既定では、トランザクション レプリケーションは、各アーティクルのストアド プロシージャ セットを使用して変更内容をサブスクライバーに反映します。 これらのプロシージャはカスタム プロシージャに置換することができます。 詳細については、「トランザクション アーティクルに変更を反映する方法の指定」を参照してください。
このトピックの内容
作業を開始する準備:
制限事項と制約事項
データの変更をトランザクション アーティクルに反映する方法を設定するために、使用するもの:
SQL Server Management Studio
Transact-SQL
作業を開始する準備
制限事項と制約事項
- レプリケーションによって生成されたスナップショット ファイルを編集する場合には注意が必要です。 カスタム ストアド プロシージャのカスタム ロジックをテストしてサポートする必要があります。 Microsoft ではカスタム ロジックをサポートしていません。
[Top]
SQL Server Management Studio の使用
反映方法は、パブリケーションの新規作成ウィザードからアクセスできる [アーティクルのプロパティ - <Article>] ダイアログ ボックスおよび [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [プロパティ] タブで指定します。 このウィザードの使用とダイアログ ボックスへのアクセスの詳細については、「パブリケーションの作成」および「パブリケーション プロパティの表示および変更」を参照してください。
反映方法を指定するには
パブリケーションの新規作成ウィザードの [アーティクル] ページ、または [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスでテーブルを選択し、[アーティクルのプロパティ] をクリックします。
[反転表示されたテーブル アーティクルのプロパティを設定] をクリックします。
[アーティクルのプロパティ - <Article>] ダイアログ ボックスの [プロパティ] タブの [ステートメントの配信] セクションで、[INSERT 配信形式]、[UPDATE 配信形式]、[DELETE 配信形式] の各メニューを使用して各操作の反映方法を指定します。
[OK] をクリックします。
[パブリケーションのプロパティ - <Publication>] ダイアログ ボックスが表示されている場合は、[OK] をクリックして保存し、ダイアログ ボックスを閉じます。
カスタム ストアド プロシージャを生成して使用するには
パブリケーションの新規作成ウィザードの [アーティクル] ページ、または [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスでテーブルを選択し、[アーティクルのプロパティ] をクリックします。
[反転表示されたテーブル アーティクルのプロパティを設定] をクリックします。
[アーティクルのプロパティ - <Article>] ダイアログ ボックスの [プロパティ] タブの [ステートメントの配信] セクションで、該当する配信形式メニュー ([INSERT 配信形式]、[UPDATE 配信形式]、または [DELETE 配信形式]) から CALL 構文を選択し、[INSERT ストアド プロシージャ]、[DELETE ストアド プロシージャ]、または [UPDATE ストアド プロシージャ] で使用するプロシージャ名を入力します。 CALL 構文の詳細については、「トランザクション アーティクルに変更を反映する方法の指定」の「ストアド プロシージャの呼び出し構文」を参照してください。
[OK] をクリックします。
[パブリケーションのプロパティ - <Publication>] ダイアログ ボックスが表示されている場合は、[OK] をクリックして保存し、ダイアログ ボックスを閉じます。
パブリケーションのスナップショットが生成されると、そのスナップショットには前の手順で指定したプロシージャが含まれています。 このプロシージャは指定した CALL 構文を使用しますが、レプリケーションが使用する既定のロジックを含んでいます。
スナップショットが生成されたら、このアーティクルが属するパブリケーションのスナップショット フォルダーに移動し、アーティクルと同じ名前の .sch ファイルを検索します。 メモ帳などのテキスト エディターでこのファイルを開き、挿入、更新、または削除の各ストアド プロシージャで CREATE PROCEDURE コマンドを検索し、プロシージャ定義を編集してデータの変更を反映するためのカスタム ロジックを指定します。 スナップショットが再生成された場合は、カスタム プロシージャを再作成する必要があります。
[Top]
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 に、それぞれ、アーティクルが属しているパブリケーションの名前、アーティクルの名前、および、パブリッシュ対象のデータベース オブジェクトを指定します。さらに、@schema_option にビットマスク 0x02 (カスタム ストアド プロシージャの自動生成を有効にする) を指定し、次のいずれかのパラメーターを指定します。
@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 に、それぞれ、アーティクルが属しているパブリケーションの名前、アーティクルの名前、および、パブリッシュ対象のデータベース オブジェクトを指定します。さらに、@schema_option にビットマスク 0x02 (カスタム ストアド プロシージャの自動生成を有効にする) を指定し、次のいずれかのパラメーターを指定します。
@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 ステートメントを使用して、挿入、更新、および削除のカスタム ストアド プロシージャに対応する CREATE PROCEDURE スクリプトが返されるように sp_scriptpublicationcustomprocs を編集します。 詳細については、「トランザクション アーティクルに変更を反映する方法の指定」を参照してください。
既存のアーティクルの変更反映メソッドを変更するには
パブリッシャーのパブリケーション データベースで sp_changearticle を実行します。 @publication と @article を指定して、@property に ins_cmd、upd_cmd、または del_cmd を指定し、さらに、該当する反映メソッドを @value に指定します。
変更対象の各反映メソッドについて、手順 1. を繰り返します。
[Top]