27

トリガーを使用してレコードをテーブルに挿入するOLEDB変換先コンポーネントを使用したSSISデータフロータスクがあります。このテーブルに対して通常のINSERTステートメントを実行すると、トリガーが起動します。SSISタスクを介してレコードを挿入すると、トリガーが起動しません。

SSISでトリガーを起動するにはどうすればよいですか?

4

3 に答える 3

54

OLE DB変換先タスクは一括挿入を使用するため、デフォルトではトリガーは起動されません。BULK INSERT(MSDN)から:

FIRE_TRIGGERSが指定されていない場合、挿入トリガーは実行されません。

Advanced Editorを使用して、OLEDBコンポーネントの一部としてFIRE_TRIGGERSを手動で指定する必要があります。

ここに画像の説明を入力してください

次に、 FastLoadOptionsの値に「FIRE_TRIGGERS」を追加します(オプションはコンマで区切られていることに注意してください)。

ここに画像の説明を入力してください

このオプションを設定すると、タスクの実行中にトリガーが起動するはずです。

于 2012-06-01T03:59:12.387 に答える
15

ラデンエッジの答えを補完します。

OLE DB変換先タスクは一括挿入を使用するため、トリガーはデフォルトでは起動されません

これは、「高速ロード」オプションが選択されている場合に当てはまります。

ここに画像の説明を入力してください

通常の「テーブルまたはビュー」データアクセスモードに変更すると、挿入は行ごとに行われるため、トリガーは正常に起動するはずです。

于 2012-06-01T08:53:13.820 に答える
1

これは、SQL Server Data Tool for Visual Studioを使用せずに、メモ帳(またはその他のテキストエディター)でdtsxファイルを編集することで実行できます。

次のプロパティを検索します。

<property
 dataType="System.String"
 description="Specifies options to be used with fast load.  Applies only 
 if  fast load is turned on."
 name="FastLoadOptions">
      TABLOCK,CHECK_CONSTRAINTS
</property>

そして、Diegoがすでに説明したように、値FIRE_TRIGGERSを追加します。

于 2017-01-19T13:03:14.480 に答える