sql >> Databáze >  >> RDS >> Sqlserver

Pomocí sys.trigger_event_types vypište typy událostí spouštění na serveru SQL Server

V SQL Server můžete použít sys.trigger_event_types vrátit všechny události nebo skupiny událostí, na které se může spouštěč spustit.

Příklad 1 – Malá ukázka

Zde používám TOP() klauzule pro vrácení prvních deseti řádků z pohledu.

SELECT TOP(10) * FROM sys.trigger_event_types;

Výsledek:

+--------+-------------------+---------------+| typ | název_typu | parent_type ||--------+-------------------+---------------|| 21 | CREATE_TABLE | 10018 || 22 | ALTER_TABLE | 10018 || 23 | DROP_TABLE | 10018 || 24 | CREATE_INDEX | 10020 || 25 | ALTER_INDEX | 10020 || 26 | DROP_INDEX | 10020 || 27 | CREATE_STATISTICS | 10021 || 28 | UPDATE_STATISTICS | 10021 || 29 | DROP_STATISTICS | 10021 || 34 | CREATE_SYNONYM | 10022 |+--------+-------------------+---------------+ 

Pokud vyberu všechny řádky, dostanu 284 při použití SQL Server 2017 a 291 v SQL Server 2019.

Příklad 2 – Získání rodiče

Pokud se podíváte pozorně na výsledky sys.trigger_event_types , uvidíte, že události spouštění DDL jsou hierarchické.

Zde je příklad, který ukazuje hierarchii tabulky CREATE_TABLE spouštěcí událost.

WITH event_types(Type, Type_Name, Parent_Type, Level) AS ( SELECT typ, type_name, parent_type, 1 AS level FROM sys.trigger_event_types WHERE type_name ='CREATE_TABLE' UNION ALL SELECT tet.type, tet.type_type, tet.parent_type , et.level + 1 AS úroveň FROM event_types AS et JOIN sys.trigger_event_types AS tet ON et.parent_type =tet.type)SELECT Type, Type_name, Parent_TypeFROM event_typesORDER BY level DESC;

Výsledek:

+--------+---------------------------+--------- ------+| Typ | Type_name | Parent_Type ||--------+---------------------------+---------- -----|| 10001 | DDL_EVENTS | NULL || 10016 | DDL_DATABASE_LEVEL_EVENTS | 10001 || 10017 | DDL_TABLE_VIEW_EVENTS | 10016 || 10018 | DDL_TABLE_EVENTS | 10017 || 21 | CREATE_TABLE | 10018 |+--------+---------------------------+----------- -----+

Vidíme, že DDL_EVENTS je na vrcholu hierarchie, následuje DDL_DATABASE_LEVEL_EVENTS atd., dokud nedosáhneme CREATE_TABLE .

Další způsob, jak si to představit, je tento:

DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLE

Můžete nahradit CREATE_TABLE v dotazu s jakýmkoli jiným typem události, abyste viděli jeho hierarchii.

Viz také Dotaz, který vrací hierarchický seznam typů spouštěcích událostí na serveru SQL, kde naleznete hierarchický seznam typů spouštěcích událostí.


  1. Jak přidat vertikální okraje do vaší výstupní mřížky SQL*Plus / SQLcl

  2. Výkonnostní překvapení a předpoklady:Libovolné TOP 1

  3. SQL Monitoring v SQL Developer

  4. Oracle PL/SQL:Příklad DBMS_SCHEDULER.CREATE_JOB