SQLサーバーエージェントでジョブをセットアップしたそれぞれにいくつかのワークパッケージがあります。時々私はすべて一緒に実行する必要があります。それらをすべて特定の順序で実行するための最良の方法は何ですか?SQLサーバーエージェントが、実行するジョブステップとしてジョブを含めることができないことに少し驚いています。私は試しました
SQLサーバーエージェントでジョブをセットアップしたそれぞれにいくつかのワークパッケージがあります。時々私はすべて一緒に実行する必要があります。それらをすべて特定の順序で実行するための最良の方法は何ですか?SQLサーバーエージェントが、実行するジョブステップとしてジョブを含めることができないことに少し驚いています。私は試しました
回答:
SSISを使用するための学習時間や既存の専門知識がない場合に、これを可能にするサードパーティのツールがあります。免責事項:私はそれらの会社の1つで働いています。SQL SentryのEvent Managerを確認してください。SQLManagerジョブ(SSISパッケージを含む)、Windowsスケジュールタスク、さらにはOracleジョブも処理します。SQL Serverの機能(チェーンとキューイングを含む)は次のとおりです。
http://sqlsentry.net/event-manager/sql-server-enterprise-features.asp
残念ながら、SQLエージェントを単独で使用して複数のジョブを連鎖させることはできないと思います。マリアンが提案したsp_start_jobメソッドは、非同期でジョブを開始します。それらが完了するのを待ってから、次のコマンドまたは次のステップに進むことができます。
SQLエージェントは、ジョブスケジューラとして「エンタープライズクラス」とは見なされません。自分で構築しなければならない多くの機能が不足しています。そのような例の1つは依存関係です。その結果、このロジックのほとんどをSSISパッケージに入れる必要があります。必ずしも悪いことではありません...自分を構築して管理するのはただの痛みです。
だから、それが私の答えです。SSISパッケージを構築し、t-sqlコマンドを使用して、必要に応じてSQLエージェントジョブを呼び出します。要件とシナリオが明確に定義されていることを確認してください。たとえば、複数のジョブが同時に同じテーブルにアクセスすることを望まない場合があります。
HTH
システムストアドプロシージャsp_start_jobを使用して、ジョブのステップでT-SQLスクリプトを使用してみてください。それはあなたがあなたが望む多くの仕事を連鎖させることを可能にします。