• 实现秒级作业的示例(使用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 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
    --*/
  • 相关阅读:
    1
    前端必读书籍推荐
    cn
    网站爬虫优化
    es学习
    适应移动端
    chrome禁止缓存,每次都最新的
    vue 源码环境
    [Java] 设计模式之工厂系列 04 (自定义模拟 spring 读取xml文件 beanFactory)
    [Java] JDOM 读取 xml 文件 示例程序初步
  • 原文地址:https://www.cnblogs.com/shihao/p/2522190.html
Copyright © 2020-2023  润新知