Как вручную выполнить сбой пакета в службах Integration Services? - PullRequest
14 голосов
/ 12 января 2009

В моем пакете служб SSIS выполняется инструкция «Выполнение SQL». Задача «Выполнение SQL» выполняет sql и проверяет, что в таблицах более 1000 строк. Если они имеют менее 1000 строк, я хочу потерпеть неудачу в пакете.

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

Ответы [ 5 ]

19 голосов
/ 12 января 2009

AFAIK, задачи в SSIS завершаются с ошибкой. Так что, если ваша задача «Выполнение SQL» содержит в себе следующую запись:

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

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

11 голосов
/ 26 июня 2015

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

1) Добавить задачу скрипта

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

Dts.TaskResult = (int)ScriptResults.Success; 

до

Dts.TaskResult = (int)ScriptResults.Failure;

и вот, пожалуйста!

3 голосов
/ 01 марта 2013

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

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). Вы должны иметь права администратора для этого. И не забудьте с логотипом

2 голосов
/ 14 января 2009

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

0 голосов
/ 08 марта 2017
  1. Создать переменную пользователя. Сохранить количество записей в этой переменной (User :: Rcnt)
  2. Просто используйте задачу отправки почты и определите рабочий процесс.
  3. В ограничении прецедента (Пользователь :: Rcnt <20) </li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...