Почему мои триггеры не срабатывают во время вставки SSIS?
У меня есть задача потока данных SSIS с компонентом назначения OLE DB, который вставляет записи в таблицу с триггером. Когда я выполняю нормальный оператор INSERT
в этой таблице, срабатывает триггер. Когда я вставляю записи в задачу SSIS, триггер не срабатывает.
Как я могу запустить триггер в SSIS?
Ответы
Ответ 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, о котором уже говорил Диего.