2012-05-01 8 views
2

データベースのオンラインステータスに基づいて実行されるジョブを作成しようとしています。たとえば、ステップ1はデータベースがオンラインであるかどうかをチェックします。データベースがオンラインの場合は、残りの手順が実行されます。そうでない場合は、ジョブが成功したと報告されます。以前のSQL Agentのジョブステップの結果に基づいてジョブステップをスキップする方法はありますか?

+0

OK。私たちに質問する質問がありましたか? –

+0

あなたはどのビットで苦労していますか? –

+0

これは、使用しているDBMSに完全に依存します。あるDBMSに対してこれを行うコマンドは、他のDBMSとは完全に無関係です。 –

答えて

2

通常、私は成功時/失敗時にフローを制御します。以下のためgrewatされていませんGOTOと、この線形の流れを管理、一日に

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 

言うまでもなく:あなたは別の支店を持っている場合は、それぞれの「ブランチ」の終わりに継続に行くNO-OPのステップが存在しなければなりません複雑なロジックが流れます。

http://www.sqlservercentral.com/articles/Stairway+Series/72457/

13

さてあなたがするステップ1を設定できます2

  • に進み、成功した場合に

    • するステップ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 
      

      失敗したらステップNに進む

    ステップ2 - > n-1は通常の処理を行います。ステップn-1は、成功すると成功するか、成功するとステップNに進むことができる。

    ステップNはのような単純なものでした:

    PRINT 1; 
    

    ...と成功との仕事を辞めするように設定されます。

  • 関連する問題