实现秒级作业的示例(使用WAITFOR).sql
2012-05-28 19:06
411 查看
USE tempdb
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name='20秒一次的作业')
EXEC msdb.dbo.sp_delete_job @job_name='20秒一次的作业'
--定义创建作业
DECLARE @jobid uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name = N'20秒一次的作业',
@job_id = @jobid OUTPUT
--定义作业步骤
DECLARE @sql nvarchar(400),@dbname sysname
SELECT @dbname=DB_NAME(),
@sql=N'
DECLARE @dt datetime
SET @dt=DATEADD(Minute,1,GETDATE())
WHILE @dt>GETDATE()
BEGIN
IF EXISTS(SELECT * FROM sysobjects WHERE name=''tb_log'')
INSERT tb_log VALUES(CONVERT(char(8),GETDATE(),108))
ELSE
SELECT dt=CONVERT(char(8),GETDATE(),108) INTO tb_log
WAITFOR DELAY ''00:00:20''
END'
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'作业步骤名称',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql
--创建调度
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'每分钟执行的调度',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@active_start_time = 000000
--添加目标服务器
DECLARE @servername sysname
SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jobid,
@server_name = @servername
GO
--等待2分钟后查看结果
WAITFOR DELAY '00:02:00'
SELECT * FROM tb_log ORDER BY dt
GO
--删除测试
DROP TABLE tb_log
EXEC msdb.dbo.sp_delete_job @job_name='20秒一次的作业'
/*--结果
dt
--------
15:08:00
15:08:20
15:08:40
--*/
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name='20秒一次的作业')
EXEC msdb.dbo.sp_delete_job @job_name='20秒一次的作业'
--定义创建作业
DECLARE @jobid uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name = N'20秒一次的作业',
@job_id = @jobid OUTPUT
--定义作业步骤
DECLARE @sql nvarchar(400),@dbname sysname
SELECT @dbname=DB_NAME(),
@sql=N'
DECLARE @dt datetime
SET @dt=DATEADD(Minute,1,GETDATE())
WHILE @dt>GETDATE()
BEGIN
IF EXISTS(SELECT * FROM sysobjects WHERE name=''tb_log'')
INSERT tb_log VALUES(CONVERT(char(8),GETDATE(),108))
ELSE
SELECT dt=CONVERT(char(8),GETDATE(),108) INTO tb_log
WAITFOR DELAY ''00:00:20''
END'
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'作业步骤名称',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql
--创建调度
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'每分钟执行的调度',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@active_start_time = 000000
--添加目标服务器
DECLARE @servername sysname
SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jobid,
@server_name = @servername
GO
--等待2分钟后查看结果
WAITFOR DELAY '00:02:00'
SELECT * FROM tb_log ORDER BY dt
GO
--删除测试
DROP TABLE tb_log
EXEC msdb.dbo.sp_delete_job @job_name='20秒一次的作业'
/*--结果
dt
--------
15:08:00
15:08:20
15:08:40
--*/
相关文章推荐
- 实现秒级作业的示例(多个作业调度).sql
- 作业的使用示例_创建定时调用存储过程的作业.sql
- SQL Server Management Studio 使用作业实现数据库备份
- 6.1.3 使用UNION实现库存报表的示例.sql
- 使用UNION实现库存报表的示例.sql
- 使用作业定时启停数据库的示例.sql
- Python使用Redis实现作业调度系统(超简单)
- 猫哥带你去战斗——Java Web开发——Java篇[9]——使用SQL语句实现增删改查
- LINQ入门教程示例使用F#的实现
- Zookeeper 进阶之——Zookeeper编程示例(如何使用Zookeeper实现屏障Barriers和队列Queues)
- gridview 实现排序 (在不是使用sqlDataSource控件,而在后台编码绑定gridview时,指定那个字段排序时使用。本例用了单层结构,可修改后应用于多层)
- 使用正则实现SQL参数替换
- ES6使用Set数据结构实现数组的交集、并集、差集功能示例
- 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件
- (Sql Server高级技巧)使用SQL语句实现备份与还原
- ASP.NET上传下载文件示例,使用webClient实现
- Python编程使用tkinter模块实现计算器软件完整代码示例
- asp.net使用H5新特性实现异步上传的示例
- yii2使用GridView实现数据全选及批量删除按钮示例
- golang使用go-sql-driver实现mysql增删改操作 推荐