实现事件通知

更新日期: 2005 年 12 月 5 日

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

ms178080.note(zh-cn,SQL.90).gif重要提示:
应该为发送消息到远程服务器中 Service Broker 的事件通知配置 Service Broker 对话安全模式。必须根据完全安全模式手动配置对话安全模式。有关详细信息,请参阅事件通知的对话安全模式

创建目标服务

无需创建 Service Broker 启动服务,因为 Service Broker 包含以下特定的事件通知消息类型和约定:

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

接收事件通知的目标服务必须使用此预先存在的约定。

创建目标服务

  1. 创建队列以接收消息。
    ms178080.note(zh-cn,SQL.90).gif注意:
    队列接收下列消息类型:
  2. 在引用事件通知约定的队列上创建服务。
  3. 创建服务路由,以定义 Service Broker 将服务消息发送到的地址。对于指向同一数据库中的服务的事件通知,请指定 ADDRESS = 'LOCAL'
    ms178080.note(zh-cn,SQL.90).gif注意:
    Service Broker 路由确定接收通知消息的服务。如果事件通知指向远程服务器中的服务,则源服务器和目标服务器必须都定义了路由,确保实现双向通信。有关详细信息,请参阅 Service Broker 路由

下面的示例将创建队列、队列服务以及服务路由,以便依据事件通知约定处理消息。

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

有关如何创建 Service Broker 目标服务的详细信息,请参阅 Introduction to Service Broker Programming

创建事件通知

事件通知使用 Transact-SQL CREATE EVENT NOTIFICATION 语句创建,使用 DROP EVENT NOTIFICATION STATEMENT 删除。若要修改事件通知,必须先删除事件通知,然后再重新创建。

下面的示例将创建事件通知 CreateDatabaseNotification。该通知将服务器中发生的 CREATE_DATABASE 事件的相关消息发送到先前创建的 NotifyService 服务。

CREATE EVENT NOTIFICATION CreateDatabaseNotification
ON SERVER
FOR CREATE_DATABASE
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;
ms178080.Caution(zh-cn,SQL.90).gif注意:
事件通知将 CREATE_SCHEMA 事件和 CREATE SCHEMA 语句的 <schema_element> 定义识别为不同的事件。例如,针对 CREATE_SCHEMA 和 CREATE_TABLE 事件创建事件通知,然后便可运行以下批处理。 CREATE SCHEMA s CREATE TABLE t1 (col1 int) 在此情况下,事件通知会引发两次:一次是在 CREATE_SCHEMA 事件发生时,另一次是在 CREATE_TABLE 事件发生时。建议您避免针对 CREATE_SCHEMA 事件和任何相应 CREATE SCHEMA 定义的 <schema_element> 文本创建事件通知,也不要将逻辑置入应用程序中以免捕获不需要的事件数据。

创建事件通知

删除事件通知

请参阅

概念

了解事件通知
设计事件通知
获取有关事件通知的信息

其他资源

EVENTDATA (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

新增内容:
  • 添加了有关针对 CREATE_SCHEMA 事件和 CREATE SCHEMA 语句的 <schema_element> 定义创建的事件通知可能会无意中引发两次的注意事项。
已更改的内容:
  • 已将事件通知的对话安全模式的相关章节更改为将用户引向其他主题的重要说明。