Подтвердить что ты не робот

Почему мои триггеры не срабатывают во время вставки SSIS?

У меня есть задача потока данных SSIS с компонентом назначения OLE DB, который вставляет записи в таблицу с триггером. Когда я выполняю нормальный оператор INSERT в этой таблице, срабатывает триггер. Когда я вставляю записи в задачу SSIS, триггер не срабатывает.

Как я могу запустить триггер в SSIS?

4b9b3361

Ответ 1

Поскольку задача OLE DB Destination использует объемную вставку, триггеры не запускаются по умолчанию. Из BULK INSERT (MSDN):

Если FIRE_TRIGGERS не указан, триггеры вставки не выполняются.

Необходимо вручную указать FIRE_TRIGGERS как часть компонента OLE DB через свой расширенный редактор.

enter image description here

Затем добавьте "FIRE_TRIGGERS" к значению FastLoadOptions (обратите внимание, что параметры разделены запятой):

enter image description here

С помощью этой опции триггеры должны запускаться во время выполнения задачи.

Ответ 2

дополняющий ответ ladenedge.

Поскольку задача назначения OLE DB использует объемную вставку, триггеры не запускается по умолчанию

Это верно, если вы выбрали опцию "быстрая загрузка".

enter image description here

Если вы измените его на обычный режим доступа к "таблице или представлению", ваши триггеры должны запускаться нормально, потому что вставка выполняется по строкам

Ответ 3

Вы можете сделать это без использования SQL Server Data Tool для Visual Studio, отредактировав файл dtsx с помощью Notepad (или любых других текстовых редакторов).

Найдите следующее свойство:

<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, о ​​котором уже говорил Диего.