为什么我的触发器通过SSIS插入在烧制过程中?(Why aren't my triggers

2019-07-29 16:26发布

我有一个将记录插入表一中触发一个OLE DB目标组件的SSIS数据流任务。 当我执行正常的INSERT语句针对此表,触发器触发。 当我通过SSIS任务插入记录触发不火。

我怎样才能在SSIS的触发器触发?

Answer 1:

因为OLE DB目标任务使用批量插入,触发器默认情况下不被解雇。 从BULK INSERT(MSDN) :

如果没有指定FIRE_TRIGGERS,则不插入触发器执行。

我们必须手工指定FIRE_TRIGGERS通过其高级编辑器中的OLE DB组件的一部分。

然后添加“FIRE_TRIGGERS”到FastLoadOptions的值(注意,选项是逗号分隔):

有了这一选项时,应触发任务的执行过程中触发。



Answer 2:

补充ladenedge的答案。

因为OLE DB目标任务使用批量插入,触发器默认情况下不解雇

当你拥有了“快速加载”选项选中这是真的。

如果您将其更改为普通的“表或视图”数据访问模式,你的触发器应该因为插入完成行由行通常火



Answer 3:

为此,您可以不使用SQL Server数据工具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>

和迭戈已经描述添加值FIRE_TRIGGERS。



文章来源: Why aren't my triggers firing during an insert by SSIS?