實現秒級作業的示例 多個作業排程 sql

2022-02-11 21:13:13 字數 1823 閱讀 7109

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

--*/

實現秒級作業的示例 使用WAITFOR sql

use tempdb if exists select from msdb.dbo.sysjobs where name 20秒一次的作業 exec msdb.dbo.sp delete job job name 20秒一次的作業 定義建立作業 declare jobid uniqueidentif...

用Quartz實現作業排程

這個跟定時器差不多,可以用來按時需要出現的功能。job 是乙個介面,它只有乙個方法void execute jobexecutioncontext context 開發者實現該介面定義執行任務,jobexecutioncontext類提供了排程上下文的各種資訊。job執行時的資訊儲存在jobexec...

乙個作業多個任務排程例子

classname metastreamsettask description todo 這裡用一句話描述這個類的作用 author caozq date 2018年10月24日 public class metastreamsettask extends singletaskjob private...