Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー データベース管理 » データベースのメンテナンス » スケジュールとイベントの使用によるタスクの自動化 » スケジュールとイベントの内部

 

データベースサーバーによるスケジュールされたイベントのチェック

イベントのスケジュール時刻の計算は、データベースサーバーの起動時と、スケジュールされた各イベントハンドラーの完了時に行われます。

次回のスケジュール時刻の計算は、スケジュール定義に指定された増分に基づいて、増分を前回の起動時刻に追加することで行われます。指定した増分よりイベントハンドラーの実行時間が長くなり、現在の処理が終わらないうちに次回のスケジュール時刻が来てしまう場合、データベースサーバーは、現在の処理の後に次のスケジュール時刻がくるように増分します。

たとえば、実行に 65 分かかるイベントハンドラーが 9 時 ~ 5 時の間の 1 時間ごとに起動するように要求された場合、実際には 9 時、11 時、1 時と 2 時間ごとに実行されます。

次回の実行まで待機時間を設ける処理を 9 時 ~ 5 時の間で実行するには、各実行の合間に WAITFOR 文を使って、指定した完了時間が経過するまでループするようにハンドラーを定義できます。

データベースサーバーを断続的に実行していて、スケジュール時刻にデータベースサーバーが実行中でない場合、イベントハンドラーが起動時に実行されることはありません。その代わりに、次のスケジュール時刻は起動時に計算されます。たとえば、毎晩 1 時にバックアップを実行するようにスケジュールしていても、終業時にはいつもデータベースサーバーを停止している場合、バックアップが実行されることはありません。

次にスケジュールされているイベント実行が 1 時間以上後の場合、データベースサーバーは時間単位で次のスケジュール時間を計算します。これにより、夏時間の開始または終了のためにシステムクロックが調整されたときに、イベントが予定どおりに起動されます。