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

2 způsoby, jak vrátit seznam spouštěčů v databázi SQL Server pomocí T-SQL

Pokud dáváte přednost správě databází SQL Server spouštěním dotazů T-SQL namísto použití GUI, zde jsou dvě možnosti pro výpis všech spouštěčů v aktuální databázi.

Možnost 1 – Zobrazení katalogu sys.triggers

Můžete použít sys.triggers zobrazení systémového katalogu, abyste získali seznam všech spouštěčů v databázi.

USE Test;
SELECT 
  name,
  OBJECT_NAME(parent_id) AS parent,
  type,
  type_desc
FROM sys.triggers;

Výsledek:

+-------------------+----------+--------+-------------+
| name              | parent   | type   | type_desc   |
|-------------------+----------+--------+-------------|
| t1_insert_trigger | t1       | TR     | SQL_TRIGGER |
| t6ins             | t6       | TR     | SQL_TRIGGER |
+-------------------+----------+--------+-------------+

Toto zobrazení vrátí všechny spouštěče s typem TR (spouštěč SQL DML) nebo TA (spouštěč DML sestavení (CLR)). Vrací názvy spouštěčů DML i názvy spouštěčů DDL (na rozdíl od další možnosti, která vrací pouze spouštěče DML).

Možnost 2 – Zobrazení katalogu sys.objects

Můžete také použít sys.objects zobrazení systémového katalogu pro získání seznamu spouštěčů.

USE Test;
SELECT
  SCHEMA_NAME(schema_id) AS [schema],
  name,
  OBJECT_NAME(parent_object_id) AS parent,
  type,
  type_desc
FROM sys.objects
WHERE type IN ('TR', 'TA');

Výsledek:

+----------+-------------------+----------+--------+-------------+
| schema   | name              | parent   | type   | type_desc   |
|----------+-------------------+----------+--------+-------------|
| dbo      | t1_insert_trigger | t1       | TR     | SQL_TRIGGER |
| dbo      | t6ins             | t6       | TR     | SQL_TRIGGER |
+----------+-------------------+----------+--------+-------------+

Všimněte si, že sys.objects uvádí pouze spouštěče DML, nikoli spouštěče DDL.

Důvodem je sys.objects vrací pouze objekty v rozsahu schématu. Názvy spouštěčů DML jsou vymezeny podle schématu, ale názvy spouštěčů DDL jsou vymezeny nadřazenou entitou. Pokud potřebujete vrátit spouštěče DDL, použijte sys.triggers .


  1. Volání členské funkce execute() na boolean in

  2. mám aktivovat sdružování příkazů c3p0?

  3. Chyba spouštění Oracle ORA-04091

  4. 3 způsoby, jak vypsat všechny uložené procedury v databázi PostgreSQL