次の方法で共有


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

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

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

このトピックの内容

  • 作業を開始する準備:

    制限事項と制約事項

  • データの変更をトランザクション アーティクルに反映する方法を設定するために、使用するもの:

    SQL Server Management Studio

    Transact-SQL

作業を開始する準備

制限事項と制約事項

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

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

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

反映方法を指定するには

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

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

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

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

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

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

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

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

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

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

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

  5. パブリケーションのスナップショットが生成されると、そのスナップショットには前の手順で指定したプロシージャが含まれています。 このプロシージャは指定した 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 を指定すると、対応するコマンドはサブスクライバーにレプリケートされません。

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

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

  1. パブリッシャー側のパブリケーション データベースに対して、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_nameCALL sp_MSupd_article_nameXCALL 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 に、それぞれ、アーティクルが属しているパブリケーションの名前、アーティクルの名前、および、パブリッシュ対象のデータベース オブジェクトを指定します。さらに、@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_nameCALL sp_MSupd_article_nameXCALL sp_MSupd_article_name、または MCALL sp_MSupd_article_name を指定します。ここで、article_name@article に指定した値です。

    注意

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

    注意

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

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

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

既存のアーティクルの変更反映メソッドを変更するには

  1. パブリッシャーのパブリケーション データベースで sp_changearticle を実行します。 @publication@article を指定して、@propertyins_cmdupd_cmd、または del_cmd を指定し、さらに、該当する反映メソッドを @value に指定します。

  2. 変更対象の各反映メソッドについて、手順 1. を繰り返します。

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連項目

概念

トランザクション アーティクルに変更を反映する方法の指定

パブリケーションとアーティクルの作成、変更、および削除 (レプリケーション)