Как я могу вручную выполнить пакет в 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)