我有一个带有OLE DB Destination组件的SSIS数据流任务,该组件将记录插入带触发器的表中。当我对该表执行正常的INSERT
语句时,触发器会触发。当我通过SSIS任务插入记录时,触发器不会触发。
如何在SSIS中触发触发器?
答案 0 :(得分:49)
由于OLE DB Destination任务使用批量插入,因此默认情况下不会触发触发器。来自BULK INSERT (MSDN):
如果未指定FIRE_TRIGGERS,则不会执行插入触发器。
必须通过高级编辑器手动指定 FIRE_TRIGGERS 作为OLE DB组件的一部分。
然后将“FIRE_TRIGGERS”添加到 FastLoadOptions 的值中(请注意选项以逗号分隔):
使用该选项后,触发器应在任务执行期间触发。
答案 1 :(得分:15)
补充了ladenedge的答案。
因为OLE DB目标任务使用批量插入,所以触发器是 默认情况下不会被解雇
当您选择“快速加载”选项时,这是真的。
如果将其更改为常规“表格或视图”数据访问模式,则触发器应正常触发,因为插入是逐行完成的
答案 2 :(得分:0)
通过使用记事本(或任何其他文本编辑器)编辑dtsx文件,可以在不使用SQL Server数据工具的情况下执行此操作。
搜索以下属性:
<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>
并添加FIRE_TRIGGERS值,如迭戈所描述的那样。