当前位置: 首页 > news >正文

SQL Server Service Broker完整示例

目录

准备

创建Message,Contract,Queue和Service

创建调用存储过程

启用SQL Agent并创建Job执行存储过程

调用demo

常见故障排除


准备

判断你的数据库YourDatabaseName是否启用了Service Broker

SELECT is_broker_enabled FROM sys.databases WHERE name = 'YourDatabaseName';

如果未启用,可以通过以下命令启用。

ALTER DATABASE YourDatabaseName SET ENABLE_BROKER;

创建Message,Contract,Queue和Service

然后按照以下步骤分别创建Message,Contract,Queue和Service。

--1. 创建Message,Contract,Queue和Service
CREATE MESSAGE TYPE [DBTestSync] VALIDATION = NONE;CREATE CONTRACT [DBTestmessages] ([DBTestSync] SENT BY ANY)CREATE QUEUE [dbo].[DBTestSyncQueue] WITH STATUS = ON , RETENTION = OFF , POISON_MESSAGE_HANDLING (STATUS = ON) ;CREATE SERVICE [DBTestSyncService]  ON QUEUE [dbo].[DBTestSyncQueue] ;

创建调用存储过程

The dequeue stored procedure (Service Program) is core of service broker implementation.  

  • Processes the messages in the Queue 

  • Handles the known errors – Inserts back the message into the queue and reprocesses it. 

  • Send email notifications for unhandled exceptions. 

  • Inserts the unknown errors into the ServiceBrokerException table. 

--2. 创建调用的存储过程
--DEQUEUE SP/ SERVICE PROGRAM - This code is responsible for picking the message from the queue and processing data
CREATE proc [dbo].[SP_TEST_SERVICE_BROKER_IN_SP]
as
beginset nocount on;DECLARE @Handle UNIQUEIDENTIFIER ;DECLARE @MessageType SYSNAME ;DECLARE @Message XMLDECLARE @dt DATEtime =GETDATE()DECLARE @ID INT DECLARE @Name VARCHAR(50)declare @spname varchar(500)declare @ERROR VARCHAR(500)SET XACT_ABORT ONBEGIN TRY--BEGIN TRANWAITFOR( RECEIVE TOP (1)  @Handle = conversation_handle,@MessageType = message_type_name,@Message = message_body FROM dbo.[DBTestSyncQueue]),TIMEOUT 1000--[DBTestSyncQueue]就是上面创建的Queue--SELECT cast(@Message  as xml)set @spname =CAST(CAST(@Message.query('/mydata/SPName/text()') AS NVARCHAR(MAX)) AS VARCHAR(500))IF @spname='SP_TEST_SERVICE_BROKER'BEGINDeclare @Id int,@Name intSET @Id = convert(int, CAST(CAST(@Message.query('/mydata/Id/text()') AS NVARCHAR(MAX)) AS VARCHAR(50)))SET @Name = convert(int, CAST(CAST(@Message.query('/mydata/Name/text()') AS NVARCHAR(MAX)) AS VARCHAR(50)))update [Users] set Name=@Name where Id=@IdEND--COMMIT TRANEND TRYBEGIN CATCH--ROLLBACKDECLARE @ErrorHandle UNIQUEIDENTIFIER;SET @ERROR =ERROR_MESSAGE()IF (ERROR_NUMBER() = 1205 OR ERROR_NUMBER() = 1222 OR ERROR_NUMBER()=18452)BEGINBEGIN DIALOG CONVERSATION @ErrorHandleFROM SERVICE DBTestSyncService TO SERVICE 'DBTestSyncService'ON CONTRACT DBTestmessages WITH ENCRYPTION = OFF;SEND ON CONVERSATION @ErrorHandle MESSAGE TYPE DBTestSync(@MESSAGE);ENDELSEBEGININSERT INTO dbo.ServiceBrokerExceptionVALUES (@Message,@ERROR ,@dt);declare @messagebody varchar(5000)=concat('<b>Error in processing Service Broker Queue</b><BR><b>SPName:</b>',isnull(@spname,'SP Cant be Determined'),'<BR> <b>ERROR:</b>',isnull(@ERROR, 'Error cant be Determined')) exec msdb.dbo.sp_send_dbmail @profile_name='DBAMail', @recipients= 'group-agency360@alterdomusgroup.onmicrosoft.com',@subject='Service Broker: Error in processing Service Broker Queue',@body=@messagebody, @body_format='HTML'ENDEND CATCH;SET XACT_ABORT OFF
ENDGO

启用SQL Agent并创建Job执行存储过程

Job需要创建两个Steps,两个Steps内容都是exec SP_TEST_SERVICE_BROKER_IN_SP。

设置Job的Steps:需要创建两个steps。

Step 1:

        1. 在General里面输入Step1-SP_TEST_SERVICE_BROKER_IN_SP

        2. Database选择YourDatabaseName

        3. Advanced选择Go to the next step

Step 2:

        1. 在General里面输入Step2-SP_TEST_SERVICE_BROKER_IN_S

        2. Database选择YourDatabaseName

        3. Advanced选择Go to step: Step1-SP_TEST_SERVICE_BROKER_IN_SP

设置Job的Schedules:

Occurs every day every 10 second(s) between 12:00:00 AM and 11:59:59 PM. Schedule will be used starting on 11/14/2024.

Name: ServiceBrokerJob--自己随意命名

Schedule type: Recurring

Frequence

        Occurs: Daily

        Recurs every: 1 days(s)

Daily frequence

        Occures every: 10 seconds--根据自己需要设置

        Startint at: 12:00:00 AM

        Ending at:   11:59:59 PM

Duration:

        Start date: 11/14/2024--默认是你创建的日期

        

调用demo

--3. 调用demo。你可以在你调用的地方这样子写
create proc SP_TEST
(@Id int,@Name nvarchar(25)
)
AS
BEGINSELECT * INTO #TmpTest --Forming a Message-- FROM ( SELECT @Id AS Id ,@Name AS Name ,'SP_TEST_SERVICE_BROKER' AS SPName )a     DECLARE @XMLMESSAGE XML;   SELECT @XMLMESSAGE = (SELECT * FROM #TmpTest FOR XML PATH ('mydata'), TYPE); ----Sending Message to the Queue---- DECLARE @Handle UNIQUEIDENTIFIER; BEGIN  DIALOG CONVERSATION @Handle FROM SERVICE DBTestSyncService  TO SERVICE 'DBTestSyncService' ON CONTRACT DBTestmessages WITH ENCRYPTION = OFF; SEND ON CONVERSATION @Handle MESSAGE TYPE DBTestSync(@XMLMESSAGE); 
END

常见故障排除

如果Service Broker没有按照预期结果运行,可以查看SQL Server Service Broker故障排除_sqlserver禁用servicebroker-CSDN博客

相关文章:

SQL Server Service Broker完整示例

目录 准备 创建Message&#xff0c;Contract&#xff0c;Queue和Service 创建调用存储过程 启用SQL Agent并创建Job执行存储过程 调用demo 常见故障排除 准备 判断你的数据库YourDatabaseName是否启用了Service Broker SELECT is_broker_enabled FROM sys.databases WH…...

CentOS7 升级OpenSSH9.0全过程和坑

近日,漏洞肆虐,需要升级新版本,才能解决漏洞。故有此文: 0 查看当前版本 [root@host-testsvc openssh-9.0p1]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 20171、在data下新建一个独立目录openssh目录,用来存放软件 [root@host-testsvc data]# mkdir openssh…...

RSTP的配置

RSTP相对于STP在端口角色、端口状态、配置BPDU格式、配置BPDU的处理方式、快速收敛机制、拓扑变更机制和4种保护特性方面的详细改进说明&#xff1a; 端口角色&#xff1a; STP中定义了三种端口角色&#xff1a;根端口&#xff08;Root Port&#xff09;、指定端口&#xff0…...

力扣257:二叉树的所有路径

给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5","1->3"]示例…...

Tcl 和 Python 在二次开发研究

引言 Tcl(Tool Command Language)和 Python 都是广泛应用于各种领域的编程语言,特别是在二次开发和自动化开发方面,两者有着独特的特性。Tcl 是一种动态的脚本语言,早期主要用于集成和控制其他程序,因此它经常出现在嵌入式应用和图形用户界面(GUI)开发中。而 Python 是…...

【NLP优化】Ubuntu 20.04 下 源码安装 CasADi + Ipopt / acados

20241114 记录一下 Ubuntu 20.04 下安装 MPC 中两种常用开源 NLP 优化器 CasADi + Ipopt / acados 可以新建一个文件夹,保存所有源码安装下载的代码 mkdir ~/mpc_dep1. 安装依赖 # **IPOPT** sudo apt-get install gcc g++ gfortran git patch wget pkg-config libmetis-de…...

[241110] 微软发布多智能体系统Magentic-One | 社区讨论:Ubuntu 26.04 LTS 发布前移除 Qt 5

目录 微软发布多智能体系统 Magentic-One社区讨论&#xff1a;Ubuntu 26.04 LTS 发布前移除 Qt 5 微软发布多智能体系统 Magentic-One 微软研究院近日发布了一个名为 Magentic-One 的多智能体系统&#xff0c;旨在解决复杂的现实世界任务。这个系统展现了令人兴奋的潜力&#…...

AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码

当前&#xff0c;5G技术已经成为推动数字经济和实体经济深度融合的关键驱动力&#xff0c;进入5G发展的下半场&#xff0c;5G与AI的融合正推动诸多行业的数字化转型和创新发展&#xff0c;终端侧AI和端云混合式AI将广泛应用于各类消费终端和各行各业。 在推动5G和AI与各行业场…...

MySQL查询执行(六):join查询

到底可不可以使用join 假设存在如下表结构&#xff1a; -- 创建表t2 CREATE TABLE t2 (id int(11) NOT NULL,a int(11) DEFAULT NULL,b int(11) DEFAULT NULL,PRIMARY KEY (id),KEY a (a) ) ENGINEInnoDB;-- 向t2写入1000条数据 drop procedure idata; delimiter ;; create pr…...

python习题练习

python习题 编写一个简单的工资管理程序系统可以管理以下四类人:工人(worker)、销售员(salesman)、经理(manager)、销售经理(salemanger)所有的员工都具有员工号&#xff0c;工资等属性&#xff0c;有设置姓名&#xff0c;获取姓名&#xff0c;获取员工号&#xff0c;计算工资等…...

MySQL高级(二):一条更新语句是如何执行的

执行步骤 1. 解析 SQL 语句 MySQL 首先会解析你输入的 UPDATE 语句。解析器会检查语法是否正确&#xff0c;并将 SQL 语句转化为内部的数据结构&#xff08;通常是语法树&#xff09;。 示例 SQL 语句&#xff1a; UPDATE employees SET salary 5000 WHERE department Sa…...

在 Ubuntu 18.04 中搭建和测试 DNS 服务器

在 Ubuntu 18.04 中搭建和测试 DNS 服务器可以通过安装和配置 BIND&#xff08;Berkeley Internet Name Domain&#xff09;来实现。以下是详细的步骤&#xff1a; 1. 安装 BIND 打开终端并运行以下命令来安装 BIND&#xff1a; sudo apt update sudo apt install bind9 bin…...

算法学习第一弹——C++基础

早上好啊&#xff0c;大佬们。来看看咱们这回学点啥&#xff0c;在前不久刚出完C语言写的PTA中L1的题目&#xff0c;想必大家都不过瘾&#xff0c;感觉那些题都不过如此&#xff0c;所以&#xff0c;为了我们能更好的去处理更难的题目&#xff0c;小白兔决定奋发图强&#xff0…...

javaWeb小白项目--学生宿舍管理系统

目录 一、检查并关闭占用端口的进程 二、修改 Tomcat 的端口配置 三、重新启动 Tomcat 一、javaw.exe的作用 二、结束javaw.exe任务的影响 三、如何判断是否可以结束 结尾&#xff1a; 这个错误提示表明在本地启动 Tomcat v9.0 服务器时遇到了问题&#xff0c;原因是所需…...

如何优化Elasticsearch的查询性能?

优化Elasticsearch查询性能可以从以下几个方面进行&#xff1a; 合理设计索引和分片&#xff1a; 确保设置合理的分片和副本数&#xff0c;考虑数据量、节点数和集群大小。根据数据量和节点数量调整分片数量&#xff0c;避免使用过多分片&#xff0c;因为每个分片都需要额外的…...

蓝桥杯每日真题 - 第12天

题目&#xff1a;&#xff08;数三角&#xff09; 题目描述&#xff08;14届 C&C B组E题&#xff09; 解题思路&#xff1a; 给定 n 个点的坐标&#xff0c;计算其中可以组成 等腰三角形 的三点组合数量。 核心条件&#xff1a;等腰三角形的定义是三角形的三条边中至少有…...

从H264视频中获取宽、高、帧率、比特率等属性信息

背景 最近整理视频编解码的代码&#xff0c;早前在jetson上封装了jetson multimedia作为视频编解码的类&#xff0c;供其他同事和其他组使用&#xff0c;但该解码接口有一个问题&#xff0c;无法首先获取视频宽高信息&#xff0c;更无法直接获取视频的帧率、比特率等信息。 解…...

Cyberchef配合Wireshark提取并解析TCP/FTP流量数据包中的文件

前一篇文章中讲述了如何使用cyberchef提取HTTP/TLS数据包中的文件,详见《Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件》,链接这里,本文讲述下如何使用cyberchef提取FTP/TCP数据包中的文件。 FTP 是最为常见的文件传输协议,和HTTP协议不同的是FTP协议传输…...

Nginx中使用keepalive实现保持上游长连接实现提高吞吐量示例与测试

场景 HTTP1 .1之后协议支持持久连接&#xff0c;也就是长连接&#xff0c;优点在于在一个TCP连接上可以传送多个HTTP请求和响应&#xff0c; 减少了建立和关闭连接的消耗和延迟。 如果我们使用了nginx去作为反向代理或者负载均衡&#xff0c;从客户端过来的长连接请求就会被…...

深度学习-卷积神经网络CNN

案例-图像分类 网络结构: 卷积BN激活池化 数据集介绍 CIFAR-10数据集5万张训练图像、1万张测试图像、10个类别、每个类别有6k个图像&#xff0c;图像大小32323。下图列举了10个类&#xff0c;每一类随机展示了10张图片&#xff1a; 特征图计算 在卷积层和池化层结束后, 将特征…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...