Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

2 sposoby na zwrócenie listy wyzwalaczy w bazie danych SQL Server przy użyciu T-SQL

Jeśli wolisz administrować bazami danych SQL Server, uruchamiając zapytania T-SQL, zamiast korzystać z GUI, oto dwie opcje wyświetlania listy wszystkich wyzwalaczy w bieżącej bazie danych.

Opcja 1 – Widok katalogu sys.triggers

Możesz użyć sys.triggers widok katalogu systemowego, aby uzyskać listę wszystkich wyzwalaczy w bazie danych.

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

Wynik:

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

Ten widok zwraca wszystkie wyzwalacze z typem TR (wyzwalacz SQL DML) lub TA (wyzwalacz DML zespołu (CLR)). Zwraca zarówno nazwy wyzwalaczy DML, jak i nazwy wyzwalaczy DDL (w przeciwieństwie do następnej opcji, która zwraca tylko wyzwalacze DML).

Opcja 2 – Widok katalogu sys.objects

Możesz także użyć sys.objects widok katalogu systemowego, aby uzyskać listę wyzwalaczy.

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');

Wynik:

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

Zauważ, że sys.objects wyświetla tylko wyzwalacze DML, a nie wyzwalacze DDL.

Dzieje się tak, ponieważ sys.objects zwraca tylko obiekty o zakresie schematu. Nazwy wyzwalaczy DML są objęte zakresem schematu, ale nazwy wyzwalaczy DDL są objęte zakresem jednostki nadrzędnej. Jeśli chcesz zwrócić wyzwalacze DDL, użyj sys.triggers .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozwój maszyn wirtualnych platformy Azure do wykorzystania w programie SQL Server

  2. Monitoruj bazy danych i instancje za pomocą Monitora aktywności | Rozwiązywanie problemów z wydajnością serwera SQL -2

  3. Ustaw pary klucz/wartość w kontekście sesji w programie SQL Server (sp_set_session_context)

  4. Zrozumienie problemu z błędnym odczytem w programie SQL Server

  5. Używanie SQL Server jako magazynu obrazów