首页 文章

为什么在SSIS插入期间我的触发器不会触发?

提问于
浏览
24

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

如何在SSIS中触发触发器?

3 回答

  • 15

    由于OLE DB目标任务使用批量插入,因此默认情况下不会触发触发器 . 来自BULK INSERT (MSDN)

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

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

    enter image description here

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

    enter image description here

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

  • 48

    补充ladenedge的答案 .

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

    选择“快速加载”选项时,这是正确的 .

    enter image description here

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

  • 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 .

相关问题