Share via


伺服器事件類別和屬性的 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_ASSEMBLYCREATE_ASSEMBLYDROP_ASSEMBLY 事件。 同樣地, TRC_FULL_TEXT 事件包含任何 FT_CRAWL_ABORTEDFT_CRAWL_STARTEDFT_CRAWL_STOPPED 事件。 ALL_EVENTS 涵蓋所有 DDL 事件、追蹤事件、 QUEUE_ACTIVATIONBROKER_QUEUE_DISABLED

若要瞭解可以從事件或事件群組查詢哪些屬性,請參閱事件架構。 根據預設,事件架構會安裝在下列目錄中:

C:\Program Files\Microsoft SQL Server\nnn\Tools\Binn\schemas\sqlserver\2006\11\events\events.xsd

例如,藉由參考 ALTER_DATABASE 事件,其父事件為 DDL_SERVER_LEVEL_EVENTS ,且其屬性為 TSQLCommandDatabaseName。 事件也會繼承屬性SQLInstance、、PostTimeComputerNameSPID、 和 LoginName。 事件沒有子事件。

注意

執行類似 DDL 作業的系統預存程式也可以引發事件通知。 測試您的事件通知,以判斷其對執行之系統預存程序的回應。 例如, CREATE TYPE 語句和 sp_addtype 預存程式都會引發事件上 CREATE_TYPE 建立的事件通知。 如需詳細資訊,請參閱 DDL 事件