2012-05-01 1 views
2

Я пытаюсь создать работу, которая будет выполняться в зависимости от состояния базы данных в сети. Например, шаг 1 проверяет, находится ли база данных в сети; если база данных находится в сети, она будет выполнять остальные шаги, иначе она сообщит о работе как успешную.Как пропустить шаг задания на основе результата предыдущего шага задания агента SQL?

+0

OK. У вас возник вопрос, чтобы спросить нас? –

+0

Итак, с каким бит вы боретесь? –

+0

Это будет полностью зависеть от используемой СУБД. Команды для этого для одной СУБД совершенно не имеют отношения к какой-либо другой СУБД. –

ответ

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; 

... и будет установлен бросить работу с успехом.