Я пытаюсь создать работу, которая будет выполняться в зависимости от состояния базы данных в сети. Например, шаг 1 проверяет, находится ли база данных в сети; если база данных находится в сети, она будет выполнять остальные шаги, иначе она сообщит о работе как успешную.Как пропустить шаг задания на основе результата предыдущего шага задания агента SQL?
2
A
ответ
2
Обычно я использую функцию «Вкл./Вкл. Отказ» для управления потоком. Если у вас есть различные ветви, в конце каждой «ветви» там должен быть шаг NO-OP, которая идет на продолжение:
Step 1 - Some Op - On Failure Goto Step 4, On Success Go to next step
Step 2 - Some Op
Step 3 - Goto continuation step
Step 4 - Some op
...
Step n - Continnuation step
Step n+1 - finish the common processing
Излишне день, управление этим линейный поток с GOTO не grewat для сложные логические потоки.
http://www.sqlservercentral.com/articles/Stairway+Series/72457/
13
Ну вы можете установить шаг 1, чтобы быть:
DECLARE @dbState TINYINT;
SELECT @dbState = state FROM sys.databases WHERE name = N'dbname';
IF @dbState = 0
BEGIN
RAISERROR('Database is online.', 11, 1);
END
Установите свойства шага 1, чтобы быть:
- на успех, перейдите к шагу 2
- при отказе, перейдите на этап N
Шаг 2 -> n-1 будет делать свои обычные вещи. Шаг n-1 может успешно завершить работу с успехом или перейти к шагу N с успехом.
Шаг N может быть столь же просто, как:
PRINT 1;
... и будет установлен бросить работу с успехом.
OK. У вас возник вопрос, чтобы спросить нас? –
Итак, с каким бит вы боретесь? –
Это будет полностью зависеть от используемой СУБД. Команды для этого для одной СУБД совершенно не имеют отношения к какой-либо другой СУБД. –