Как я могу вручную выполнить пакет в Integration Services?

Я запускаю инструкцию Execute SQL Task в своем пакете SSIS. Задача Execute SQL Task выполняется sql и проверяет, что таблицы имеют более 1000 строк. Если у них меньше 1000 строк, я хочу провалить пакет.

Как принудительно выполнить сбой внутри оператора SQL?

Ответ 1

AFAIK, задачи в SSIS не срабатывают при ошибке. Поэтому, если ваша задача Execute SQL Task имеет такой статус, как в нем:

declare @count int
select @count = select count(*) from my_table
if @count < 1000
begin
    raiserror('Too few rows in my_table',16,1)
end
else
begin
    -- Process your table here
end

Вы должны получить нужные результаты.

Ответ 2

Мне нравится принудительно выполнить сбой с помощью задачи script. Это действительно легко.

1) Добавьте задачу script

2) Измените строку автоматически сгенерированного кода на:

Dts.TaskResult = (int)ScriptResults.Success; 

to

Dts.TaskResult = (int)ScriptResults.Failure;

и там вы идете!

Ответ 3

Вам нужно создать свойство FailPackageOnFailure true..try, чтобы получить свойство FailPackageOnFailure конкретной задачи и присвоить значение true. так что пакет не будет выполнен.

Ответ 4

Вы можете создать собственное сообщение об ошибке, подобное этому

EXEC sp_ADDMESSAGE 
        @msgnum=55555,
        @severity=1,
        @msgtext='Threshold condition failed. The package execution has been terminated.'

Вы можете вызвать эту ошибку, используя Raiserror()

Raiserror (55555,20,-1) WITH LOG

Вам нужно ввести число больше 18 для серьезности (здесь 20). Для этого вам нужны права администратора. И не забывайте WITH LOG

Ответ 5

  • Создайте пользовательскую переменную. Сохраните количество записей в этой переменной (User:: Rcnt)
  • Просто используйте задачу отправки почты и определите рабочий процесс.
  • В прецедентном ограничении (User:: Rcnt < 20)