Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです
2008年11月08日 |
SQLエージェントジョブの実行間隔 |
| SQL Serverでの定期実行タスクを管理するSQL Server Agentサービス。 SQL Agentでは最短 1分周期でジョブのスケジューリングが可能なのですが、ジョブが規定時間内に終了しなかった場合、次回のジョブ実行がどのようなタイミングになるのか調べてみました。(検証対象はSQL Sever 2005) 単純に長時間のジョブが重複して実行されないか心配だっただけなのですが、案外微妙な挙動を示すようです。 ![]() 普通に考えて、現在のジョブが実行中にもかかわらず次のジョブが実行されてしまうなどという情けない実装は考えにくいわけで、当然のことながらそのような動きはしません。 次に考えるのは、ジョブが終了した時点から(1分周期なら)1分後に次のジョブが動くのではないか、ということ。 実はこれも外れでして、正解は「あらかじめ定められた次回の実行タイミングに次のジョブが実行される」です。 気になるのは「あらかじめ定められた次回の実行タイミング」というのはどのように決まるのか、という問題ですが、これには『一日のうちの頻度』-『開始(時刻)』の設定が影響してきます。 『一日のうちの頻度』-『間隔』が実行周期を指すわけですが、この実行周期が「分」単位の場合は、『開始(時刻)』で設定している「秒」が反映され、「毎分xx秒」のタイミングでジョブが実行されます。 実行周期が「時間」単位の場合は、『開始(時刻)』の「分秒」が反映されることとなり、「毎時xx分xx秒」のタイミングになるわけです。 ちょっと分かりにくいので、例示すると次のようになります。 A) 間隔= 1分、開始= 15:00:05 の場合要するに、実行タイミングの決定には『開始(時刻)』の設定がさりげなく反映されているということのようです。 xx分周期、xx時間周期といっても、ジョブの処理時間までは当然ながら考慮できないので、このような仕様になっているのでしょう。 [ posted by ken ]
|
| この記事に対するコメント |
| この記事に対するコメントの投稿 |
| この記事に対するトラックバック |
| トラックバックURL
→http://comfair2.blog24.fc2.com/tb.php/397-9d88f04a この記事にトラックバックする(FC2ブログユーザー) |
|
|