SQLServer 的事件通知

news2025/2/26 9:39:58

事件通知

  • 一、背景知识
    • 1.1、事件通知的好处
    • 1.2、事件通知概念
    • 1.3、事件通知与触发器
  • 二、实现事件通知
    • 2.1、创建目标服务
    • 2.2、创建事件通知
  • 三、为事件通知配置对话安全性
  • 总结

一、背景知识

事件通知将有关事件的信息发送到服务代理服务。通过将有关这些事件的信息发送到服务代理服务,执行事件通知以响应各种事务处理 SQL 数据定义语言 (DDL) 语句和 SQL 跟踪事件。

事件通知可用于执行以下操作:

  • 记录和查看数据库上发生的更改或活动。

  • 以异步而非同步方式执行操作以响应事件。

事件通知可以提供 DDL 触发器和 SQL 跟踪的编程替代方法。
在这里插入图片描述

1.1、事件通知的好处

事件通知在事务范围之外异步运行。因此,与 DDL 触发器不同,事件通知可以在数据库应用程序内部用于响应事件,而无需使用即时事务定义的任何资源。

与 SQL 跟踪不同,事件通知可用于在 SQL Server 实例内执行操作以响应 SQL 跟踪事件。

与 SQL Server 一起运行的应用程序可以使用事件数据来跟踪进度并做出决策。例如,每次在示例数据库中发出语句时,以下事件通知都会向特定服务发送通知。

USE AdventureWorks2012;  
GO  
CREATE EVENT NOTIFICATION NotifyALTER_T1  
ON DATABASE  
FOR ALTER_TABLE  
TO SERVICE '//Adventure-Works.com/ArchiveService' ,  
    '8140a771-3c4b-4479-8ac0-81008ab17984';

1.2、事件通知概念

创建事件通知时,将打开 SQL Server 实例与指定目标服务之间的一个或多个服务代理对话。只要事件通知作为对象存在于服务器实例上,对话通常就会保持打开状态。在某些错误情况下,对话可能会在丢弃事件通知之前关闭。这些对话永远不会在事件通知之间共享。每个事件通知都有自己的专属对话。显式结束会话可防止目标服务接收更多消息,并且下次触发事件通知时不会重新打开会话。

事件信息作为 xml 类型的变量传递到 Service Broker 服务,该变量提供有关事件发生时间、受影响的数据库对象、涉及的 Transact-SQL 批处理语句以及其他信息的信息。

1.3、事件通知与触发器

下表比较和对比了触发器和事件通知。
在这里插入图片描述
下表比较和对比了使用事件通知和 SQL 跟踪来监视服务器事件。
在这里插入图片描述

二、实现事件通知

若要实现事件通知,必须先创建接收事件通知的目标服务,然后创建事件通知。

2.1、创建目标服务

不必创建服务代理启动服务,因为服务代理包括以下事件通知的特定消息类型和协定:

https://schemas.microsoft.com/SQL/Notifications/PostEventNotification

接收事件通知的目标服务必须遵守此预先存在的协定。

要创建目标服务,请执行以下操作:

  1. 创建队列以接收消息。参考。
  2. 在队列上创建引用事件通知协定的服务。
  3. 在服务上创建路由以定义服务代理将服务消息发送到的地址。对于以同一数据库中的服务为目标的事件通知,请指定 ADDRESS = ‘LOCAL’ 。

示例:在队列上创建一个队列、一个服务,在服务上创建一个路由,以处理来自事件通知协定的消息。

CREATE QUEUE NotifyQueue ;  
GO  
CREATE SERVICE NotifyService  
ON QUEUE NotifyQueue  
(  
[http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]  
);  
GO  
CREATE ROUTE NotifyRoute  
WITH SERVICE_NAME = 'NotifyService',  
ADDRESS = 'LOCAL';  
GO

2.2、创建事件通知

事件通知是使用 Transact-SQL 创建事件通知语句创建的,并使用 DROP 事件通知语句删除。若要修改事件通知,必须删除并重新创建事件通知。

以下示例创建事件通知。此通知将有关服务器上发生的任何事件的消息发送到以前创建的服务。

CREATE EVENT NOTIFICATION CreateDatabaseNotification  
ON SERVER  
FOR CREATE_DATABASE  
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;

三、为事件通知配置对话安全性

应为将消息发送到远程服务器上的服务代理的事件通知配置服务代理对话框安全性。必须根据服务代理对话框完全安全模型手动配置对话框安全性。完全安全模型允许对发送到远程服务器和从远程服务器发送的消息进行加密和解密。尽管事件通知是在一个方向上发送的,但其他消息(如错误)也会以相反的方向返回。

以下步骤介绍了实现事件通知的对话安全性所需的过程。这些步骤包括要在源服务器和目标服务器上执行的操作。源服务器是在其上创建事件通知的服务器。目标服务器是接收事件通知消息的服务器。必须先完成源服务器和目标服务器的每个步骤中的操作,然后才能继续下一步。

  1. 步骤 1:建立 TCP 端口号和目标服务名称。建立源服务器和目标服务器将在其上接收消息的 TCP 端口。还必须确定目标服务的名称。
  2. 步骤 2:为数据库级身份验证配置加密和证书共享。
  3. 步骤 3:共享证书并授予数据库级身份验证的权限。
  4. 步骤 4:创建路由并设置服务器级身份验证。
  5. 步骤 5:共享用于服务器级身份验证的证书并创建事件通知。

步骤2在源服务器和目标服务器上完成以下操作:
在这里插入图片描述
步骤 3 在源服务器和目标服务器上完成以下操作:
在这里插入图片描述
步骤 4 在源服务器和目标服务器上完成以下操作:
在这里插入图片描述
步骤 5 在源服务器和目标服务器上完成以下操作:
在这里插入图片描述

总结

  1. 应为将消息发送到远程服务器上的服务代理的事件通知配置服务代理对话框安全性。必须根据完整安全模型手动配置对话框安全性。
  2. 服务代理路由确定接收通知消息的服务。如果事件通知以远程服务器上的服务为目标,则源服务器和目标服务器都必须在其上定义路由,以确保发生双向通信。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新买的电脑,设置电脑

设置电脑自动清理垃圾 开机后,需要首先设置好让电脑自动定期为你清理垃圾。具体的方法也很简单,右击桌面,找到显示设置。 图片进入后依次点开“储存”-“储存感知”-“配置储存感知立即运行”,设置为“每天”,然后下方…

《花雕学AI》01:尝试使用新必应制作《雕爷学编程》的栏目介绍

跨年头尾三个月,花雕走完塔克拉玛干沙漠回来后,突然发现世界变了,微软投资的ChatGPT火起来了,特别是升级的ChatGPT4.0,更是异常火热!这一个多月来,人工智能AI突然爆发,能做的事情太多…

深度学习中的目标识别

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

干翻Hadoop系列文章【03】:MapReduce概念详解

引言 数据存储在分布式文件系统中HDFS里边,通过使用Hadoop资源管理系统YARN,Hadoop可以将MapReduce计算,转移到有存储部分的数据的各台机器上。 一:概念和原理 1:MapReduce作业 MapReduce作业被称为一个工作单元。…

基于SpringBoot+微信小程序的壁纸小程序

基于SpringBoot微信小程序的壁纸小程序 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景…

Springboot高级(一)缓存

一、缓存结构 二、注解 三、体验缓存 1、开启缓存 EnableCaching SpringBootApplication EnableCaching public class SpringbootCacheApplication {2、标志注解 (1)Cacheable Cacheable(value "emp", condition "#id2", unless…

【李老师云计算】实验一:Hadoop伪分布式集群部署与Eclipse访问Hadoop进行单词计数统计

索引前言实验内容1. 安装虚拟机1.1 安装与激活1.2 ★解决使用虚拟机蓝屏(绿屏)2. 安装CentOS2.1 下载CentOS2.2 VMware新建虚拟机2.3 安装CentOS(包括GUI、主机名)2.4 ★解决已经创建虚拟机改主机名3. VMWare 网络配置3.0 使用VI编辑器和VMware3.0.1 使用VI编辑器3.0.2 使用VMw…

SQL Server 数据操控,视图和索引

文章目录前言1.在student表中插入一行新记录,学号为,姓名为胡明月,性别为男,年龄为,系部为CS2.在student表中插入一条新记录,学号为,姓名为李红,性别为女3.将胡明月的年龄修改为194.…

R语言实践——ggplot2+ggrepel绘制散点+优化注释文本位置

简介 书接adjustText实践——调整matplotlib散点图标签,避免重复 上文中,matplotlibadjustText对于我的实例来说并没有起到很好的效果。所以,博主决定在R中利用gglot2ggrepel绘制,期待效果。 操作过程 博主不常使用R&#xff…

尚融宝14-集成redis缓存

目录 一、简介 1、场景 2、RedisTemplate 二、引入Redis 1、项目中集成Redis 2、添加Redis连接配置 3、启动Redis服务 三、测试RedisTemplate 1、存值测试 2、Redis配置文件 3、取值测试 四、将数据字典存入redis 一、简介 1、场景 由于数据字典的变化不是很频繁,而…

Unity 热更新技术 | (四) Lua语言基本语法及关键知识介绍

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬…

python ——批量读取相同格式文件(多个文件夹/单个文件夹)---nc文件为例

在处理多个相同格式的文件时,python中的许多模块可以为我们提供很多遍历。 比如,我们想读取一个文件夹下多个相同格式的文件时 可以使用os模块, import os以下有几个常见用法: 1、os.path.abspath(path) #返回绝对路径 2、os.pat…

【周末闲谈】畅想AR,AR领域迎来新风口

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? 文章目录周末闲谈前言AR?🤔🤔🤔AR的发展👣&…

Matplotlib数据可视化

Matplotlib是⼀个Python 2D,3D绘图库,它以多种硬拷⻉格式和跨平台的交互式环境⽣成出版物质量的图形。 MatplotlibMatplotlib中文网、Matplotlib官方中文文档。https://www.matplotlib.org.cn/ 1.模块导⼊ import matplotlib.pyplot as plt #使⽤py…

分布式事务详解

🏆今日学习目标: 🍀分布式事务详解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光…

Web 攻防之业务安全:密码找回安全案例总结.

Web 攻防之业务安全:密码找回安全案例总结 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台(操作系统、数据库,中间件等)、业务系统自身(软件或设备)、业务所…

微软New Bing初体验:AI时代的搜索引擎(内含体验方法)

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

AI未来十年新范式,生成式人工智能的挑战与机遇

目录0 写在前面1 什么是生成式模型?2 生成式模型的挑战3 自主智能新架构4 持续学习与表征解耦4.1 学习范式4.2 学习架构5 生成式AI与元宇宙6 智慧文档:赋能数字化转型7 结语0 写在前面 2023年3月18日,由中国图象图形学学会(CSIG&…

【李老师云计算】HBase+Zookeeper部署及Maven访问

索引前言1. Zookeeper1.1 主机下载Zookeeper安装包1.2 主机解压Zookeeper1.3 ★解决解压后文件缺失1.4 主机配置Zookeeper文件1.4.1 配置zoo_sample.cfg文件1.4.2 配置/data/myid文件1.5 主机传输Zookeeper文件到从机1.6 从机修改Zookeeper文件1.6.1 修改zoo.cfg文件1.6.2 修改…

生成器设计模式(Builder Design Pattern)[论点:概念、图示、示例、框架中的应用、场景]

文章目录概念相关图示代码示例框架中的应用场景多个生成器(Concrete Builder):单个生成器概念 生成器设计模式(Builder Design Pattern)是一种创建型设计模式,用于处理具有多个属性和复杂构造过程的对象。生…