トリガーを使用してレコードをテーブルに挿入するOLEDB変換先コンポーネントを使用したSSISデータフロータスクがあります。このテーブルに対して通常のINSERT
ステートメントを実行すると、トリガーが起動します。SSISタスクを介してレコードを挿入すると、トリガーが起動しません。
SSISでトリガーを起動するにはどうすればよいですか?
トリガーを使用してレコードをテーブルに挿入するOLEDB変換先コンポーネントを使用したSSISデータフロータスクがあります。このテーブルに対して通常のINSERT
ステートメントを実行すると、トリガーが起動します。SSISタスクを介してレコードを挿入すると、トリガーが起動しません。
SSISでトリガーを起動するにはどうすればよいですか?
OLE DB変換先タスクは一括挿入を使用するため、デフォルトではトリガーは起動されません。BULK INSERT(MSDN)から:
FIRE_TRIGGERSが指定されていない場合、挿入トリガーは実行されません。
Advanced Editorを使用して、OLEDBコンポーネントの一部としてFIRE_TRIGGERSを手動で指定する必要があります。
次に、 FastLoadOptionsの値に「FIRE_TRIGGERS」を追加します(オプションはコンマで区切られていることに注意してください)。
このオプションを設定すると、タスクの実行中にトリガーが起動するはずです。
ラデンエッジの答えを補完します。
OLE DB変換先タスクは一括挿入を使用するため、トリガーはデフォルトでは起動されません
これは、「高速ロード」オプションが選択されている場合に当てはまります。
通常の「テーブルまたはビュー」データアクセスモードに変更すると、挿入は行ごとに行われるため、トリガーは正常に起動するはずです。
これは、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を追加します。