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

2022-02-11 21:13:02 字數 1720 閱讀 5679

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

--*/

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

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

利用crond實現秒級執行的辦法

昨天在設定 目錄的安全時候,為了安全方面的考慮需要將某個目錄下的檔案3秒清空一次,第一反應是通過cron來解決,可crontab似乎只支援到分,怎麼辦呢?經過一番努力,終於解決了,分享一下方法,希望幫助到有類似需求的同學。小編在這裡先簡單介紹下cron是個什麼東西。crontab命令常見於unix和...

作業1,秒錶,定時器的實現

主要任務為 1,oled顯示秒錶時間,當前模式 2,秒錶模式可以記錄幾個時間 3,秒錶模式下10ms傳送串列埠資料,當前時間和模式 4,通過按鍵更改,轉換成定時器模式 5,定時器模式下可以自行設定初始時間,並倒計時 6,倒計時情況下燈逐漸熄滅 秒錶部分 if flag ks0作為開始按鈕,點選後啟動...