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



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



Как я могу получить срабатывание триггера в SSIS?

698   3  

3 ответов:

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

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

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

Введите описание изображения здесь

Затем добавить "параметр fire_triggers" стоимостью параметре fastloadoptions (обратите внимание, что варианты через запятую):

Введите описание изображения здесь

При наличии этой опции триггеры должны срабатывать во время выполнения задачи.

Дополняя ответ ладенеджа.

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

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

Введите описание изображения здесь

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

Это можно сделать без использования SQL Server Data Tool для 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, как уже описал Диего.

Comments

    Ничего не найдено.