Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
W tym temacie opisano sposób uzyskiwania informacji o wyzwalaczach DML w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL. Te informacje mogą obejmować typy wyzwalaczy w tabeli, nazwę wyzwalacza, jego właściciela i datę utworzenia lub modyfikacji. Jeśli wyzwalacz nie został zaszyfrowany podczas jego tworzenia, uzyskasz definicję wyzwalacza. Możesz użyć definicji, aby zrozumieć, w jaki sposób wyzwalacz wpływa na tabelę, na której jest zdefiniowany. Ponadto można znaleźć obiekty używane przez określony wyzwalacz. Dzięki tym informacjom można zidentyfikować obiekty wpływające na wyzwalacz, jeśli zostaną zmienione lub usunięte w bazie danych.
w tym temacie
Przed rozpoczęciem:
Aby uzyskać informacje o wyzwalaczach DML, użyj polecenia:
Przed rozpoczęciem
Bezpieczeństwo
Uprawnienia
sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
Widoczność metadanych w widokach katalogu jest ograniczona do obiektów, których właścicielem jest użytkownik lub w stosunku do których użytkownik ma jakieś uprawnienia. Aby uzyskać więcej informacji, zobacz Konfiguracja widoczności metadanych.
OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Wymaga członkostwa w publicznej roli . Definicja obiektów użytkownika jest widoczna dla właściciela obiektu lub nabywców uprawnień, którzy mają jedno z następujących uprawnień: ALTER, CONTROL, TAKE OWNERSHIP lub VIEW DEFINITION. Te uprawnienia są domyślnie przyznane członkom stałych ról bazy danych: db_owner, db_ddladminoraz db_securityadmin.
sys.sql_expression_dependencies
Wymaga uprawnienia WYŚWIETL DEFINICJĘ w bazie danych i uprawnienia SELECT dla sys.sql_expression_dependencies w bazie danych. Domyślnie uprawnienie SELECT jest przyznawane tylko członkom stałej roli bazy danych db_owner. Gdy uprawnienia SELECT i VIEW DEFINITION zostaną przyznane innemu użytkownikowi, odbiorca uprawnień może wyświetlić wszystkie zależności w bazie danych.
Korzystanie z programu SQL Server Management Studio
Aby wyświetlić definicję wyzwalacza DML
W Eksploratorze obiektówpołącz się z instancją aparatu bazy danych, a następnie rozwiń tę instancję.
Rozwiń bazę danych, którą chcesz, rozwiń tablicę Tabele, a następnie rozwiń tę tablicę, która zawiera wyzwalacz, dla którego chcesz wyświetlić definicję.
Rozwiń Wyzwalacze, kliknij prawym przyciskiem myszy odpowiedni wyzwalacz, a następnie kliknij Modyfikuj. Definicja wyzwalacza DML jest wyświetlana w oknie zapytania.
Aby wyświetlić zależności wyzwalacza DML
W Eksploratorze obiektów , połącz się z wystąpieniem silnika bazy danych, a następnie rozwiń to wystąpienie.
Rozwiń bazę danych, którą chcesz, rozwiń Tabele, a następnie rozwiń tabelę zawierającą wyzwalacz i jego zależności, które chcesz wyświetlić.
Rozwiń Wyzwalacze, kliknij prawym przyciskiem myszy odpowiedni wyzwalacz, a następnie kliknij przycisk Wyświetl zależności.
W oknie Zależności obiektów, aby wyświetlić obiekty zależne od wyzwalacza DML, wybierz Obiekty, które zależą od nazwy wyzwalacza DML <>. Obiekty są wyświetlane w obszarze zależności .
Aby wyświetlić obiekty, od których zależy DML, wybierz Obiekty, na których <nazwa wyzwalacza DML> zależy od. Obiekty są wyświetlane w obszarze zależności . Rozwiń każdy węzeł, aby wyświetlić wszystkie obiekty.
Aby uzyskać informacje o obiekcie, który jest wyświetlany w obszarze zależności, kliknij obiekt. W polu wybranego obiektu informacje są przekazane w polach nazwa, typi typ zależności.
Aby zamknąć okno zależności obiektów, kliknij przycisk OK.
Korzystanie z Transact-SQL
Aby wyświetlić definicję wyzwalacza DML
Połącz się z silnikiem bazy danych.
Na pasku standardowym kliknij pozycję Nowe zapytanie.
Skopiuj i wklej jeden z poniższych przykładów w oknie zapytania, a następnie kliknij Wykonaj. W każdym przykładzie pokazano, jak można wyświetlić definicję wyzwalacza
iuPerson
.
USE AdventureWorks2022;
GO
SELECT definition
FROM sys.sql_modules
WHERE object_id = OBJECT_ID(N'Person.iuPerson');
GO
USE AdventureWorks2022;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition;
GO
USE AdventureWorks2022;
GO
EXEC sp_helptext 'Person.iuPerson'
GO
Aby wyświetlić zależności wyzwalacza DML
Połącz się z silnikiem bazy danych.
Na pasku Standardowa kliknij pozycję Nowe zapytanie.
Skopiuj i wklej jeden z poniższych przykładów w oknie zapytania, a następnie kliknij Wykonaj. W każdym przykładzie pokazano, jak można wyświetlić zależności wyzwalacza
iuPerson
.
USE AdventureWorks2022;
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,
o.type_desc AS referencing_description,
COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,
referencing_class_desc, referenced_class_desc,
referenced_server_name, referenced_database_name, referenced_schema_name,
referenced_entity_name,
COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,
is_caller_dependent, is_ambiguous
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
WHERE referencing_id = OBJECT_ID(N'Person.iuPerson');
GO
Aby wyświetlić informacje o wyzwalaczach DML w bazie danych
Połącz się z silnikiem bazy danych.
Na pasku standardowym kliknij pozycję Nowe zapytanie.
Skopiuj i wklej jeden z poniższych przykładów w oknie zapytania, a następnie kliknij Wykonaj. W każdym przykładzie pokazano, jak można wyświetlać informacje o wyzwalaczach DML (
TR
) w bazie danych.
USE AdventureWorks2022;
GO
SELECT name, parent_id, create_date, modify_date, is_instead_of_trigger
FROM sys.triggers
WHERE type = 'TR';
GO
USE AdventureWorks2022;
GO
SELECT name, object_id, schema_id, parent_object_id, type_desc, create_date, modify_date, is_published
FROM sys.objects
WHERE type = 'TR';
GO
USE AdventureWorks2022;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger');
GO
Aby wyświetlić informacje o zdarzeniach, które uruchamiają wyzwalacz DML
Połącz się z silnikiem bazy danych.
Na pasku standardowym kliknij pozycję Nowe zapytanie.
Skopiuj i wklej jeden z poniższych przykładów w oknie zapytania, a następnie kliknij Wykonaj. W każdym przykładzie pokazano, jak można wyświetlić zdarzenia uruchamiające wyzwalacz
iuPerson
.
USE AdventureWorks2022;
GO
SELECT object_id, type, type_desc, is_trigger_event, event_group_type, event_group_type_desc
FROM sys.events
WHERE object_id = OBJECT_ID('Person.iuPerson');
GO
USE AdventureWorks2022;
GO
SELECT object_id, type,is_first, is_last
FROM sys.trigger_events
WHERE object_id = OBJECT_ID('Person.iuPerson');
GO
Zobacz też
CREATE TRIGGER (Transact-SQL)
WYZWALACZ DROP (Transact-SQL)
WŁĄCZ WYZWALACZ (Transact-SQL)
WYŁĄCZ WYZWALACZ (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)