底部有编辑内容。请跳转到下面的 MSFT 部分。
(这个顶部块只是因为问题最初带有 mysql
标签,对 MSFT 的同事们表示歉意。)
MYSQL
考虑使用 MySQL 的创建事件策略,可以避免需要执行 cron 作业。
DELIMITER $$
CREATE EVENT annualThingEvent
ON SCHEDULE EVERY '1' YEAR
STARTS '2016-01-01 00:00:00'
DO
BEGIN
END$$
DELIMITER ;
从CREATE EVENT的手册页面上,
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND
正确设置事件并监控它们非常重要。
show variables where variable_name='event_scheduler';
+
| Variable_name | Value |
+
| event_scheduler | OFF |
+
糟糕,事件调度程序没有开启。
我可以等上一整天,但事件甚至还没有被开启。
SET GLOBAL event_scheduler = ON;
show variables where variable_name='event_scheduler';
+
| Variable_name | Value |
+
| event_scheduler | ON |
+
按模式名称列出所有事件:
show events from so_gibberish;
或者
show events\G; -- <--------- I like this one from mysql> prompt
show events; -- <--------- from workbench / sqlyog
*************************** 1. row ***************************
Db: so_gibberish
Name: set_trips_finished
Definer: GuySmiley@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2015-08-23 00:00:00
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
MSFT
我并不了解这个,但是因为在删除整个答案时,OP提出了这个问题,所以我将其包含在内。摘自此处。
概述
调度是每个数据库管理软件非常有用的功能。在 MS SQL Server 中,SQL Server Agent 充当调度程序并执行任务。
解释
SQL Server Agent 是 MySQL 事件调度程序的等效物。它是除 MS SQL Express 外的每个版本的一部分。可以从 SQL Server Management Studio 访问它。
然而,MS SQL 的实现与 MySQL 中 CREATE EVENT 语句语法非常不同。您必须单独创建作业、作业步骤和计划。有两种方法可以执行此任务,您可以使用 GUI 或创建 Transact-SQL 语句。
使用 T-SQL 创建定期作业的一般步骤如下:
- 执行
sp_add_job
创建作业。
- 执行
sp_add_jobstep
创建每个作业步骤。
- 执行
sp_add_schedule
创建计划。您可以定义更多的计划,例如在凌晨3点和晚上11点运行。
- 执行
sp_attach_schedule
将计划链接到作业。
- 执行
sp_add_jobserver
设置作业的服务器。
此外,请查看这篇有关实现作业的 MSDN article。
as
而不是=
。 - Gordon Linoff