Získání informací o triggerech DML
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Toto téma popisuje, jak získat informace o triggerech DML v SQL Serveru pomocí aplikace SQL Server Management Studio nebo Jazyka Transact-SQL. Tyto informace můžou zahrnovat typy triggerů v tabulce, název triggeru, jeho vlastníka a datum vytvoření nebo změny. Pokud trigger nebyl při vytváření zašifrovaný, získáte definici triggeru. Definici můžete použít, abyste pochopili, jak trigger ovlivňuje tabulku, na které je definována. Můžete také zjistit objekty, které konkrétní trigger používá. Pomocí těchto informací můžete identifikovat objekty, které mají vliv na trigger, pokud se v databázi změní nebo odstraní.
v tomto tématu
Než začnete:
Získání informací o triggerech DML pomocí:
Než začnete
Bezpečnost
Dovolení
sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
Viditelnost metadat v zobrazeních katalogu je omezená na objekty, které uživatel vlastní, nebo na kterých byla uživateli udělena určitá oprávnění. Další informace naleznete v kapitole Konfigurace viditelnosti metadat.
OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Vyžaduje členství ve veřejné roli . Definice uživatelských objektů je viditelná pro vlastníka objektu nebo uživatelé, kterým byla udělena práva, kteří mají některé z následujících oprávnění: ALTER, CONTROL, TAKE OWNERSHIP nebo VIEW DEFINITION. Tato oprávnění implicitně uchovávají členové db_owner, db_ddladmina db_securityadmin pevné databázové role.
sys.sql_expression_dependencies
Vyžaduje oprávnění VIEW DEFINITION pro databázi a oprávnění SELECT pro sys.sql_expression_dependencies pro databázi. Ve výchozím nastavení je oprávnění SELECT uděleno pouze členům db_owner pevné databázové role. Pokud jsou oprávnění SELECT a VIEW DEFINITION udělena jinému uživateli, může příjemce zobrazit všechny závislosti v databázi.
Použití aplikace SQL Server Management Studio
Zobrazení definice triggeru DML
V Průzkumník objektůse připojte k instanci Databázový stroj a poté rozbalte tuto instanci.
Rozbalte požadovanou databázi, rozbalte Tabulkya potom rozbalte tabulku obsahující trigger, pro který chcete zobrazit definici.
Rozbalte Triggery, klepněte pravým tlačítkem myši na požadovanou aktivační událost a potom klepněte na tlačítko Upravit. Definice triggeru DML se zobrazí v okně dotazu.
Pro zobrazení závislostí triggeru DML
V Průzkumník objektů, připojte se k instanci databázového stroje a poté rozbalte tuto instanci.
Rozbalte požadovanou databázi, rozbalte Tabulkya potom rozbalte tabulku obsahující aktivační událost a její závislosti, které chcete zobrazit.
Rozbalte Triggery, klikněte pravým tlačítkem myši na požadovaný trigger a pak klikněte na Zobrazit závislosti.
V okně Závislostí objektů zobrazte objekty, které závisí na triggeru DML, vyberte Objekty, které závisí na <názvu triggeru DML>. Objekty se zobrazí v oblasti závislostí.
Pokud chcete zobrazit objekty, na kterých DML závisí, vyberte Objekty, na kterých <název triggeru DML> závisí. Objekty se zobrazí v oblasti Závislostí. Rozbalením jednotlivých uzlů zobrazíte všechny objekty.
Chcete-li získat informace o objektu, který se objeví v oblasti Dependencies, klepněte na objekt. V poli Vybraný objekt jsou informace uvedeny v polích Název, typ Typa Typ závislosti.
Chcete-li zavřít závislosti objektů okno, klepněte na tlačítko OK.
Použití Transact-SQL
Zobrazení definice triggeru DML
Připojte se k databázovému stroji.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte jeden z následujících příkladů do okna dotazu a klikněte na Spustit. Každý příklad ukazuje, jak můžete zobrazit definici triggeru
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
Chcete-li zobrazit závislosti triggeru DML
Připojte se k databázovému stroji.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte jeden z následujících příkladů do okna dotazu a klikněte na Spustit. Každý příklad ukazuje, jak můžete zobrazit závislosti triggeru
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
Zobrazení informací o triggerech DML v databázi
Připojte se k databázovému stroji.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte jeden z následujících příkladů do okna dotazu a klikněte na Spustit. Každý příklad ukazuje, jak v databázi zobrazit informace o triggerech DML (
TR
).
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
Pro zobrazení informací o událostech, které spouští DML trigger
Připojte se k databázovému stroji.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte jeden z následujících příkladů do okna dotazu a klikněte na Spustit. Každý příklad ukazuje, jak můžete zobrazit události, které aktivují trigger
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
Viz také
VYTVOŘIT SPOUŠŤ (Transact-SQL)
trigger DROP (Transact-SQL)
povolení spouštěče (Transact-SQL)
ZAKÁZAT TRIGGER (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)