získejte informace o spouštěčích DML

  • článek
  • 12/17/2021
  • 4 zápis ke čtení
    • M
    • r
    • c
    • p
je tato stránka užitečná?

Děkuji.

platí pro: yes SQL Server (všechny podporované verze)  AnoAzure SQL Database

toto téma popisuje, jak získat informace o spouštěčích DML v SQL Serveru pomocí SQL Server Management Studio nebo Transact-SQL. Tyto informace mohou zahrnovat typy spouštěčů v tabulce, název spouštěče, jeho vlastníka a datum, kdy byl vytvořen nebo změněn. Pokud spoušť nebyla šifrována, když byla vytvořena, získáte definici spouště. Pomocí definice můžete pochopit, jak spoušť ovlivňuje tabulku, na které je definována. Můžete také zjistit objekty, které konkrétní spouštěč používá. Pomocí těchto informací můžete identifikovat objekty, které ovlivňují spoušť, pokud jsou v databázi změněny nebo odstraněny.

v tomto tématu

  • než začnete:

    bezpečnost

  • Chcete-li získat informace o spouštěčích DML, použijte:

    SQL Server Management Studio

    Transact-SQL

než začnete

zabezpečení

oprávnění

sys.SQL.moduly, sys.objekt, sys.spouště, sys.události, sys.trigger_events
viditelnost metadat v pohledech katalogu je omezena na securables, které uživatel buď vlastní, nebo na které mu bylo uděleno určité oprávnění. Další informace naleznete v části Konfigurace viditelnosti metadat.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
vyžaduje členství ve veřejné roli. Definice uživatelských objektů je viditelná vlastníkovi objektu nebo příjemcům grantů, kteří mají jedno z následujících oprávnění: změnit, ovládat, převzít vlastnictví nebo zobrazit definici. Tato oprávnění jsou implicitně držena členy pevných databázových rolí db_owner, db_ddladmin a db_securityadmin.

sys.sql_expression_dependencies
Vyžaduje oprávnění definice zobrazení v databázi a vyberte oprávnění v systému sys.sql_expression_dependencies pro databázi. Ve výchozím nastavení je oprávnění SELECT uděleno pouze členům pevné databázové role db_owner. Pokud jsou oprávnění pro výběr a zobrazení definic udělena jinému uživateli, může příjemce grantu Zobrazit všechny závislosti v databázi.

použití SQL Server Management Studio

pro zobrazení definice spouštěče DML

  1. v Průzkumníku objektů se připojte k instanci databázového stroje a rozbalte tuto instanci.

  2. rozbalte požadovanou databázi, rozbalte tabulky a poté rozbalte tabulku obsahující spoušť, pro kterou chcete definici Zobrazit.

  3. rozbalte triggery, klepněte pravým tlačítkem myši na požadovanou spoušť a potom klepněte na tlačítko Upravit. Definice spouštěče DML se zobrazí v okně dotazu.

zobrazení závislostí spouštěče DML

  1. v Průzkumníku objektů se připojte k instanci databázového stroje a rozbalte tuto instanci.

  2. rozbalte požadovanou databázi, rozbalte tabulky a poté rozbalte tabulku obsahující spoušť a její závislosti, které chcete zobrazit.

  3. rozbalte triggery, klepněte pravým tlačítkem myši na požadovanou spoušť a potom klepněte na tlačítko Zobrazit závislosti.

  4. v okně závislostí objektů, Chcete-li zobrazit objekty, které závisí na spouštěči DML, vyberte objekty, které závisí na <název spouštěče DML>. Objekty se zobrazí v oblasti závislostí.

    Chcete-li zobrazit objekty, na kterých závisí DML, vyberte objekty, na kterých závisí <název spouštěče DML>. Objekty se zobrazí v oblasti závislostí. Rozbalte každý uzel a zobrazte všechny objekty.

  5. Chcete-li získat informace o objektu, který se objeví v oblasti závislostí, klikněte na objekt. V poli vybraný objekt jsou informace uvedeny v polích Název, typ a typ závislosti.

  6. Chcete-li zavřít okno závislostí objektů, klikněte na OK.

použití Transact-SQL

pro zobrazení definice spouštěče DML

  1. Připojte se k databázovému stroji.

  2. na Standardní liště klikněte na nový dotaz.

  3. 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 spouště iuPerson.

USE AdventureWorks2012; GO SELECT definition FROM sys.sql_modules WHERE object_id = OBJECT_ID(N'Person.iuPerson'); GO 
USE AdventureWorks2012; GO SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition; GO 
USE AdventureWorks2012; GO EXEC sp_helptext 'Person.iuPerson' GO 

zobrazení závislostí spouštěče DML

  1. Připojte se k databázovému stroji.

  2. na Standardní liště klikněte na nový dotaz.

  3. 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 iuPerson trigger.

USE AdventureWorks2012; GO SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name, o.type_desc AS referencing_desciption, 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 spouštěčích DML v databázi

  1. Připojte se k databázovému stroji.

  2. na Standardní liště klikněte na nový dotaz.

  3. 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 informace o spouštěčích DML (TR) v databázi.

USE AdventureWorks2012; GO SELECT name, parent_id, create_date, modify_date, is_instead_of_trigger FROM sys.triggers WHERE type = 'TR'; GO 
USE AdventureWorks2012; 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 AdventureWorks2012; GO SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger'); GO 

Chcete-li zobrazit informace o událostech, které spouštějí spoušť DML

  1. Připojte se k databázovému stroji.

  2. na Standardní liště klikněte na nový dotaz.

  3. 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é spouštějí spoušť iuPerson.

USE AdventureWorks2012; 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 AdventureWorks2012; 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 TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
povolit TRIGGER (Transact-SQL)
zakázat TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
sp_help (Transact-SQL)
sys.triggery (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)

Write a Comment

Vaše e-mailová adresa nebude zveřejněna.