2017-02-16 12 views
0

Я создаю пакет SSIS. В этом пакете у меня есть поток данных, в который я вставляю в БД (пункт назначения) CSV (источник).Ошибка при запуске триггера в пакете SSIS (SQL Server 2016)

Пакет работает отлично. Проблема возникает, когда я пытаюсь одновременно запускать триггеры. Для этого я редактирую свойства компонента назначения. Конкретно в свойствах я добавление ,FIRE_TRIGGERS ниже:

FastLoadOptions | TABLOCK,CHECK_CONSTRAINTS,FIRE_TRIGGERS 

Теперь, когда я бег пакета я получаю следующее сообщение об ошибке:

[OLE DB Destination [139]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The statement has been terminated.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.".

Я последовал за эту статью Unable to access sql server configuration manager и я просто выполнил следующую команду из Admin-CMD (у меня есть SQL Server 2016)

cd "C:\Program Files (x86)\Microsoft SQL Server\140\Shared" Then Run : mofcomp sqlmgmproviderxpsp2up.mof

Но все равно ничего.

Спасибо за помощь!

Моя система: Windows 10, SQL Server 2016, Visual Studio 2015

Edit: Код триггера следующее:

DROP TRIGGER IF EXISTS AccidentsTrigger 
GO 
USE SSIS_db; 
GO 
CREATE TRIGGER AccidentsTrigger 
ON [Accidents] 
AFTER INSERT AS 
BEGIN; 
    SET NOCOUNT ON; 
    IF (SELECT [second_road_class] FROM INSERTED) LIKE '-1' 
    BEGIN; 
     UPDATE a 
     SET [second_road_class] = '6' 
     FROM [Accidents] AS a 
      INNER JOIN INSERTED i ON a.accident_index = i.accident_index AND i.[second_road_class] = '-1'; 
    END; 
END; 
GO 
+0

Сообщение об ошибке сообщает вам, что именно не так. Вам нужно будет опубликовать код запуска, если вам все еще нужна помощь в обнаружении ошибки. –

+0

Я не опубликовал код запуска, потому что, когда я выполняю простую вставку через SSMS, все работает нормально! Обновление: я редактирую исходное сообщение и включаю код запуска. Редактировать: С помощью триггера действительно что-то не так. Я тестировал его с одной строкой, но для нескольких строк он работает неправильно. – Diaman

ответ

0

Видимо там были две ошибки. Результат Trigger в нескольких строках и факт, что агент SQL Server был включен вручную по умолчанию (он должен быть включен автоматически). Доступ к службе агента SQL Server можно получить с помощью диспетчера конфигурации SQL Server.