次の方法で共有


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

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

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

このトピックの内容

はじめに

制限事項と制約事項

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

SQL Server Management Studio を使用する

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

反映方法を指定するには

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

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

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

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

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

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

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

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

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

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

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

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

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

Transact-SQL の使用

トランザクション レプリケーションでは、パブリッシャーからサブスクライバーへの変更の反映方法を制御できます。この反映メソッドは、アーティクルの作成時やその後の変更時に、レプリケーションのストアド プロシージャを使用してプログラムから設定できます。

Note

パブリッシュされたデータ行に適用される DML (データ操作言語) 操作には、挿入、更新、削除などがありますが、各種の操作に対して異なる反映メソッドを指定できます。

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

データ変更を Transact-SQL コマンドを使って反映するアーティクルを作成するには

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

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

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

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

    Note

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

    詳しくは、「 アーティクルを定義」をご覧ください。

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

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

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

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

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

    Note

    上記のパラメーターに対して 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_nameXCALL sp_MSupd__article_name*、または MCALL sp_MSupd_article_name の値を指定します。ここで、article_name@articleに指定された値です。

    Note

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

    Note

    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_nameCALL sp_MSupd_article_nameXCALL sp_MSupd_article_name MCALL sp_MSupd_article_name の値を指定します。ここでarticle_nameは@articleに指定された値です。

    Note

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

    Note

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

    詳しくは、「 アーティクルを定義」をご覧ください。

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

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

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

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

参照

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