实现秒级作业的示例(使用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
--*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
SQL Server 中可以使用 Service Broker 实现消息传递。Service Broker 是 SQL Server 内置的一种消息传递机制,可以在数据库之间或同一数据库中的不同应用程序之间传递消息。 Service Broker 中的消息传递过程分为三个步骤:创建队列、发送消息和接收消息。 1. 创建队列 要使用 Service Broker 进行消息传递,首先需要在数据库中创建一个队列。队列是用于存储消息的容器,可以在发送和接收消息时使用。 ```sql -- 创建队列 CREATE QUEUE [MyQueue]; ``` 2. 发送消息 要发送消息,需要向队列发送一条消息。在发送消息之前,需要创建一个合同(Contract)和一个消息类型(Message Type)。 ```sql -- 创建合同 CREATE CONTRACT [MyContract] ( [MyMessage] SENT BY ANY ); -- 创建消息类型 CREATE MESSAGE TYPE [MyMessage] VALIDATION = NONE; -- 向队列发送消息 DECLARE @message_body NVARCHAR(MAX) = N'Hello, world!'; DECLARE @dialog_handle UNIQUEIDENTIFIER; BEGIN DIALOG @dialog_handle FROM SERVICE [SenderService] TO SERVICE '[ReceiverService]' ON CONTRACT [MyContract] WITH ENCRYPTION = OFF; SEND ON CONVERSATION @dialog_handle MESSAGE TYPE [MyMessage] (@message_body); ``` 在上面的示例中,先创建了一个合同和一个消息类型,然后使用 BEGIN DIALOG 语句创建了一个对话,将其存储在 @dialog_handle 变量中。接着使用 SEND 语句向队列发送消息,消息的内容存储在 @message_body 变量中。 3. 接收消息 要接收消息,需要从队列中获取一条消息。在接收消息之前,需要创建一个服务(Service)和一个队列监视器(Queue Monitor)。 ```sql -- 创建服务 CREATE SERVICE [ReceiverService] ON QUEUE [MyQueue] ([MyContract]); -- 创建队列监视器 CREATE QUEUE [MonitorQueue]; CREATE SERVICE [MonitorService] ON QUEUE [MonitorQueue] ([MyContract]); -- 从队列中接收消息 DECLARE @message_body NVARCHAR(MAX); WAITFOR ( RECEIVE TOP(1) @message_body = CAST(message_body AS NVARCHAR(MAX)) FROM [MyQueue] ), TIMEOUT 5000; -- 处理接收到的消息 PRINT @message_body; ``` 在上面的示例中,先创建了一个服务和一个队列监视器,然后使用 WAITFOR 和 RECEIVE 语句从队列中获取一条消息,将其存储在 @message_body 变量中。接着可以对接收到的消息进行处理,比如打印出来。 以上是 Service Broker 实现消息传递的简单示例。需要注意的是,Service Broker 可以实现高效可靠的消息传递,但是配置和使用也比较复杂,需要仔细学习和实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值