[PRB] 一括操作を行うとマージ レプリケーションで複写されない

この記事は、以前は次の ID で公開されていました: JP275680
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
bcp コマンドライン ユーティリティ、Transact-SQL BULK INSERT ステートメント、一括コピー API、または SQL Server データ変換サービス (DTS) などの一括操作を使用して、マージ レプリケーションに参加するテーブルにデータを読み込むと、特定の手法を使用しない限り、挿入された行はほかのサーバーにレプリケートされません。
原因
これらの一括操作は、大量のデータを高速かつ効率的に読み込むために最適化されているため、デフォルトでは、一括操作は挿入されたデータを受け取るテーブルでトリガを起動しません。マージ レプリケーションは、パブリッシャとサブスクライバの間の変更を追跡するために、参加しているテーブル上のシステム トリガを使用する必要がある為、トリガが起動されないと行をレプリケートすることができません。
回避策
この問題の回避策は、データの一括コピーの方法と、使用している SQL Server のバージョンによって異なります。

  • SQL Server DTS を使用して行を挿入している場合、[データ変換タスクのプロパティ] の [オプション] タブの [高速読み取りを使用] チェック ボックス (デフォルトではオンになっている) をオフにします。ただし、SQL Server 2000 の一括挿入タスクは [高速読み取りを使用] チェック ボックスを変更する機能を公開しておらず、データ変換タスクだけがこの機能を公開しています。

  • SQL Server 2000 で bcp コマンドライン ユーティリティまたは Transact-SQL BULK INSERT ステートメントを使用している場合、FIRE_TRIGGERS オプションを使用する必要があります。SQL Server Version 7.0 では FIRE_TRIGGERS オプションを使用できないことに注意してください。SQL Server Version 7.0 では一括操作のための FIRE_TRIGGERS オプションが使用できないので、DTS を除くすべての一括操作ではサブスクライバに行がレプリケートされません。

  • ODBC を経由して一括コピー API を使用する場合、bcp_control() 関数の呼び出しによって適切な接続ハンドルで FIRE_TRIGGERS オプションを有効にする必要があります。

  • IRowsetFastLoad OLE DB インターフェイスを使用する場合、IOpenRowset インターフェイスの SSPROP_FASTLOADOPTIONS プロパティの FIRE_TRIGGERS オプションを指定します。
詳細
マージ レプリケーションでパブリケーションにレプリケートされる INSERT コマンド、DELETE コマンド、および UPDATE コマンドが MSmerge_contents テーブルと MSmerge_tombstone テーブルに追加されると、これらのコマンドはマージ エージェントによって追跡されます。レプリケーションのセットアップ中にテーブルで作成されたシステム トリガによって、これらのテーブルに行が追加されます。

一括操作は変換先テーブルにあるテーブル制約を確認せず、変換先テーブルでトリガの起動もしません。その結果、マージ レプリケーションのシステム トリガは起動されません。これらのトリガが起動されないので、一括挿入操作によって "影響のある" 行が MSmerge_contents テーブルに追加されず、サブスクライバにレプリケートされません。

関連情報

FIRE_TRIGGERS オプションが指定された場合の変換先テーブルにおけるトリガの実行の影響について詳しくは、SQL Server 2000 Books Online の「bcp と BULK INSERT の使用」を参照してください。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 275680 (最終更新日 2001-06-25) をもとに作成したものです。

trigger bulk-copy ODBC OLE DB
プロパティ

文書番号:275680 - 最終更新日: 01/16/2015 20:51:11 - リビジョン: 3.1

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbprb KB275680
フィードバック