27

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

如何在 SSIS 中触发触发器?

4

3 回答 3

54

因为 OLE DB 目标任务使用大容量插入,所以默认情况下不会触发触发器。从批量插入(MSDN)

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

必须通过其高级编辑器手动将FIRE_TRIGGERS指定为 OLE DB 组件的一部分。

在此处输入图像描述

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

在此处输入图像描述

使用该选项,触发器应在任务执行期间触发。

于 2012-06-01T03:59:12.387 回答
15

补充ladenedge的答案。

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

当您选择了“快速加载”选项时,情况就是如此。

在此处输入图像描述

如果您将其更改为常规的“表或视图”数据访问模式,您的触发器应该正常触发,因为插入是逐行完成的

于 2012-06-01T08:53:13.820 回答
1

通过使用记事本(或任何其他文本编辑器)编辑 dtsx 文件,您可以在不使用 SQL Server Data Tool for Visual Studio 的情况下执行此操作。

搜索以下属性:

<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 正如 Diego 已经描述的那样。

于 2017-01-19T13:03:14.480 回答