4

私のチームが現在ジョブをスケジュールする方法は、SQL Server ジョブ エージェントを使用しています。これらのジョブの多くは、データを最新の状態に保つために実行する必要がある独自の SQL Server ジョブを持つ他の内部サーバーに依存しています。

これにより、各 SQL Server ジョブの開始時間と長さに依存関係が生まれました。ジョブ A はジョブ B の終了に依存する可能性があるため、ジョブ A の特定の推定時間前にジョブ B をスケジュールします。このプロセスはすべて非常に主観的であり、スケーラブルではありません。より多くのジョブとサーバーを追加すると、より多くの依存関係が作成されます。

これらのジョブを主観的にスケジュールし、ドミノが正しい順序で配置されることを期待するビジネスから抜け出したいです。SQL Server ジョブをスケジュールするために受け入れられている方法は何なのか疑問に思っています。ジョブを連鎖させるために SSIS を使用していますか? これを処理するために SQL Server ジョブ エージェントに既に組み込まれているツールはありますか?

相互に依存関係を持つ複数の SQL Server ジョブのスケジュールを処理するために受け入れられている方法は何ですか?

4

3 に答える 3

2

複数のエージェントジョブ間の依存関係を管理する必要もありました。さまざまなサードパーティツールを検討し、さまざまな理由(主にサードパーティソフトウェアの使用に関連する内部制約に至るまで)でそれらを割り引いた後、独自のソリューションを作成することにしました。

このソリューションは、実行する必要のあるプロセス(ジョブ)とそれらのグループ化(バッチ)に関する詳細、およびプロセス間の依存関係を保持する構成データベースを中心としています。

使用した構成テーブルの要約:

バッチ-関連するプロセスのグループの高レベルの定義。最大同時プロセスや現在のバッチインスタンスなどのメタデータが含まれます。プロセス-名前、最大待機時間、最早実行時間、ステータス(有効/無効)、バッチ(プロセスが属するバッチ)、プロセスジョブ名など。バッチインスタンス-特定のバッチのアクティブインスタンスプロセスインスタンス-特定のバッチのプロセスのアクティブインスタンスプロセス依存関係-依存関係マトリックスバッチインスタンスステータス-バッチインスタンスステータスのルックアッププロセスインスタンスステータス-プロセスインスタンスステータスのloolup

各バッチには、STARTBATCHとUPDATEBATCHの2つの制御ジョブがあります。1つ目は、それに属するすべてのプロセスの開始を扱い、2つ目は、任意のバッチで最後に実行され、結果ステータスの更新を扱います。

各プロセスには、START BATCHジョブによって実行されるエージェントジョブが関連付けられています。プロセスには上限付きの同時実行性(バッチ構成で定義)があるため、プロセスは一度に最大xまで開始され、STARTBATCHは次のプロセスを開始する前に、空きスロットが使用可能になります。

プロセスエージェントのジョブステップは、実際のETL作業と、プロセスを実行する必要があり、依存関係などを待機する必要があるかどうかに関する意思決定を処理するテンプレート化されたSSISパッケージを呼び出します。

現在、柔軟性と制御性を高めるために、サービスブローカーソリューションへの移行を検討しています。

とにかく、おそらくここでは詳細が多すぎて例が不十分なので、VS2010プロジェクトはリクエストに応じて利用できます。

于 2013-01-15T13:33:01.897 に答える
2

以前に Control-M を使用して、異なる環境で相互に依存する複数のジョブをスケジュールしました。Control-M は通常、(私の記憶では) バッチ ファイルを使用して SSIS パッケージを実行します。

2 つのデータ ウェアハウスを並べてホストする複雑な環境がありました (1 つは海外、もう 1 つは米国ローカル)。他のジョブに依存しているジョブや、それらのジョブが他のジョブに依存しているジョブなどもありましたが、Control-M を使用することで依存関係を簡単に判断できました (非常に素晴らしく直感的な GUI を備えています)。私の頭に浮かぶ他のツールは Tidal Scheduler です。

ジョブ スケジューリングに明確な基準はありませんが、ジョブ スケジュールは組織のニーズに完全に依存すると言っても過言ではありません。たとえば、財務の仕事は、Sales や Sales on Inventory などに依存している可能性があります。しかし要点は、ジョブの相互依存性が必要な場合は、Control-M などのサードパーティ製ソフトウェアを使用するのが安全な賭けであるということです。さまざまな環境でジョブを制御でき、会社全体のジョブ制御を実感できます。

于 2012-09-20T23:25:24.730 に答える
0

これがどれだけ役立つかはわかりませんが、最終的にスケジュール設定用のメール ソリューションを作成しました。

Exchange メールボックスにアクセスする電子メール リーダーを作成しました。ジョブが終了すると、メール リーダーに電子メールを送信して別のジョブを開始します。もう 1 つの優れた点は、ほとんどのアプリケーションにはメール通知が組み込まれているため、カスタム プログラミングの邪魔にならないことです。

私たちは、他の多くのパートナーからのデータ ファイルを処理するために最初に構築しただけです。FTP サイトなどで設定するよりも、メールアドレスを提供する方がはるかに簡単でした。

メール リーダー アプリは現在、基本的なフィルタリング、時間帯のスケジューリング、同時ジョブを防止するためのセマフォの使用などを含むように拡張されています。本当にうまく機能します。

于 2012-09-24T19:02:07.650 に答える