在数据库服务器启动时以及每当调度的事件处理程序完成时,都会进行调度的事件时间的计算。
根据在调度定义中指定的增量,将增量与上一开始时间累加来计算下一个调度时间。如果执行事件处理程序花费的时间比指定的增量大,导致下一时间早于当前时间,则数据库服务器会按指定的增量计算下一个调度时间,直到下一个调度时间是将来的时间。
例如,其执行需要六十五分钟且被请求在 9:00 和 5:00 之间每小时运行一次的事件处理程序,将每隔两小时运行一次,即在 9:00、11:00、1:00 等时间运行。
为运行一个在 9:00 和 5:00 之间工作并在下一次执行之前延迟一段时间的进程,您可以将处理程序定义为在其完成时间超过之前不断循环,并且每次迭代之间都有一个 WAITFOR 语句。
如果您正在间歇地运行数据库服务器,而且不是在调度时间运行,则在启动时事件处理程序不会运行。而是会在启动时计算下一个调度时间。例如,如果您将一个备份预定在每天凌晨一点发生,但在每个工作日结束时都会关闭数据库服务器,则该备份永远也不会发生。
如果一个事件的下一调度执行时间是在一小时以后,则数据库服务器将以小时为基础重新计算它的下一个调度时间。这允许事件在系统时钟调整(系统时钟更改为 Daylight Saving Time 或者由 Daylight Saving Time 更改为其它)时按预期触发。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |