实现秒级作业的示例(多个作业调度).sql
2012-05-20 20:55
239 查看
USE tempdb
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name='30秒一次的作业')
EXEC msdb.dbo.sp_delete_job @job_name='30秒一次的作业'
--定义创建作业
DECLARE @jobid uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name = N'30秒一次的作业',
@job_id = @jobid OUTPUT
--定义作业步骤
DECLARE @sql nvarchar(400),@dbname sysname
SELECT @dbname=DB_NAME(),
@sql=N'
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'
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'作业步骤名称',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql
--创建调度1
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'第1个30秒',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@active_start_time = 00000
--创建调度2
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'第2个30秒',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@active_start_time = 00030
--添加目标服务器
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='30秒一次的作业'
/*--结果
dt
--------
14:54:01
14:54:31
14:55:01
14:55:31
--*/
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name='30秒一次的作业')
EXEC msdb.dbo.sp_delete_job @job_name='30秒一次的作业'
--定义创建作业
DECLARE @jobid uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name = N'30秒一次的作业',
@job_id = @jobid OUTPUT
--定义作业步骤
DECLARE @sql nvarchar(400),@dbname sysname
SELECT @dbname=DB_NAME(),
@sql=N'
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'
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'作业步骤名称',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql
--创建调度1
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'第1个30秒',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@active_start_time = 00000
--创建调度2
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'第2个30秒',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@active_start_time = 00030
--添加目标服务器
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='30秒一次的作业'
/*--结果
dt
--------
14:54:01
14:54:31
14:55:01
14:55:31
--*/
相关文章推荐
- 实现秒级作业的示例(使用WAITFOR).sql
- Transact-SQL 示例 - 一个UPDATE实现多个数据列的条件更新
- OS作业调度中HRN的模拟实现
- java作业调度、定时任务实践(三种实现方式)
- sql server 2000 作业调度+存储过程实现在自动更新表格
- Spring联姻Quartz实现作业调度
- 利用Sql实现将指定表数据导入到另一个数据库示例
- 使用Quartz2.1.6+Spring3.0实现任务调度简单示例
- 使用作业定时启停数据库的示例.sql
- 在EF4.1的DBContext中实现事务处理(BeginTransaction)和直接执行SQL语句的示例
- SQL 2008用作业实现同步详解
- OpenJWeb使用Spring框架实现定时作业调度的例子
- quartz.net结合Topshelf实现windows service服务托管的作业调度框架
- 使用Quartz2.1.6+Spring3.0实现任务调度简单示例
- 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度
- 利用Sql作业在asp.net 里面实现异步调用存储过程.
- SQL Server Management Studio 使用作业实现数据库备份
- Spring+Quartz 实现自动作业调度