用于服务器事件类和属性的 WMI 提供程序
适用范围:SQL Server
有两个主要类别的事件构成 WMI 提供程序服务器事件的编程模型,可以通过针对提供程序发出 WQL 查询来查询这些事件。 这些是数据定义语言(DDL)事件和跟踪事件。 QUEUE_ACTIVATION
BROKER_QUEUE_DISABLED
还可以查询 Service Broker 事件。
事件和事件组
若要获取服务器事件的完整列表,请使用以下 Transact-SQL 脚本查询 sys.event_notification_event_types
目录视图。
; WITH EventsCTE (Child, Level, Hierarchy)
AS (
SELECT t.[type],
0,
CAST(t.[type_name] AS NVARCHAR(MAX))
FROM sys.event_notification_event_types t
WHERE t.parent_type IS NULL
UNION ALL
SELECT t.[type],
Level + 1,
CAST(rc.Hierarchy + '/' + cast(t.[type_name] AS NVARCHAR(MAX)) AS NVARCHAR(MAX))
FROM sys.event_notification_event_types t
INNER JOIN EventsCTE rc
ON t.parent_type = rc.Child
)
SELECT Level, Hierarchy
FROM EventsCTE
WHERE Level > 0
ORDER BY Hierarchy;
注解
例如,事件 DDL_ASSEMBLY_EVENTS
包括任意 ALTER_ASSEMBLY
事件 CREATE_ASSEMBLY
和 DROP_ASSEMBLY
事件。 同样,事件 TRC_FULL_TEXT
包括任何 FT_CRAWL_ABORTED
事件 FT_CRAWL_STARTED
和 FT_CRAWL_STOPPED
事件。 ALL_EVENTS
涵盖所有 DDL 事件、跟踪事件 QUEUE_ACTIVATION
和 BROKER_QUEUE_DISABLED
。
若要了解可以通过事件或事件组查询的属性,请参考事件架构。 默认情况下,事件架构安装在以下目录中:
C:\Program Files\Microsoft SQL Server\nnn\Tools\Binn\schemas\sqlserver\2006\11\events\events.xsd
例如,通过引用 ALTER_DATABASE
事件,其父事件是 DDL_SERVER_LEVEL_EVENTS
且其属性为 TSQLCommand
和 DatabaseName
。 该事件还继承属性 SQLInstance
、PostTime
、ComputerName
、SPID
和 LoginName
。 该事件没有子事件。
注意
执行 DDL 式操作的系统存储过程还可以激发事件通知。 测试您的事件通知以确定它们是否响应运行的系统存储过程。 例如, CREATE TYPE
语句和 sp_addtype
存储过程都会触发在事件上 CREATE_TYPE
创建的事件通知。 有关详细信息,请参阅 DDL 事件。