После вставки триггер никогда не срабатывает с помощью мастера импорта - PullRequest
0 голосов
/ 02 января 2019

С помощью мастера импорта я попытался импортировать данные в таблицы tcc_Block и PROJECT_IDENTITY.

Эти две структуры таблиц уже существуют в SQL Server, и они связаны через столбцы ProjectID. PROJECT_IDENTITY имеет ProjectID в качестве PK и tcc_Block в качестве клавиши FK.

Каждый раз, когда я импортирую таблицы, ProjectID в родительской таблице создается и увеличивается, но значение в дочерней таблице всегда равно NULL.

Триггер никогда не срабатывает!?

ALTER TRIGGER [dbo].[InsertTest]
ON [dbo].[tcc_Block]
AFTER INSERT
AS
BEGIN
    DECLARE @proj int;

    SELECT @proj = MAX(ProjectID) 
    FROM PROJECT_IDENTITY;

    UPDATE tcc_Block
    SET ProjectID = @proj
    WHERE ProjectID IS NULL;
END;
GO

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

У меня была похожая проблема с экспортом SQL 2008, который я сохранил как пакет dtsx в файловой системе.Итак, я открыл пакет в моей SSMS 2016, и он открывается в виде XML-файла.Я нашел свойство "FastLoadOptions": property id = "72" name = "FastLoadOptions".Затем прокрутите до конца строки, где вводятся параметры, и добавьте «FIRE_TRIGGERS»:

TABLOCK, CHECK_CONSTRAINTS, FIRE_TRIGGERS / property>.Сохранил его и снова загрузил на шаг моей работы (не забудьте проверить «Использовать 32-битную среду выполнения» на вкладке «Выполнение»).И это прекрасно работает.

0 голосов
/ 02 января 2019

Массовая вставка , как правило, не запускает триггеры, если только она не установлена ​​явно (см. FIRE_TRIGGERS).Если этот пакет отредактирован в службах SSIS (мастер импорта экспорта создает пакеты служб SSIS), можно выбрать параметр «Триггеры огня» на странице параметров редактора задач групповой вставки.Но Мастер импорта экспорта не предоставляет способ установить эту опцию.Вы можете сохранить пакет в файловой системе и отредактировать его в Visual Studio, чтобы включить эту опцию, или вы можете экспортировать данные в виде плоских файлов и импортировать их с помощью команды BULK INSERT, указав параметр FIRE_TRIGGERS.

...