Dela via


Hämta information om DML-utlösare

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Det här avsnittet beskriver hur du hämtar information om DML-utlösare i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. Den här informationen kan omfatta typer av utlösare i en tabell, namnet på en utlösare, dess ägare och det datum då den skapades eller ändrades. Om utlösaren inte krypterades när den skapades får du definitionen av utlösaren. Du kan använda definitionen för att förstå hur en utlösare påverkar tabellen som den definieras för. Du kan också ta reda på vilka objekt som en specifik utlösare använder. Med den här informationen kan du identifiera de objekt som påverkar utlösaren om de ändras eller tas bort i databasen.

i det här avsnittet

Innan du börjar

Säkerhet

Behörigheter

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
Synligheten för metadata i katalogvyer är begränsad till skyddsbara objekt som en användare antingen äger eller som användaren har beviljats viss behörighet för. För mer information, se inställningar för metadatasynlighet.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Kräver medlemskap i offentlig roll. Definitionen av användarobjekt är synlig för objektägaren eller beviljare som har någon av följande behörigheter: ALTER, CONTROL, TAKE OWNERSHIP eller VIEW DEFINITION. Dessa behörigheter innehas implicit av medlemmar i db_owner, db_ddladminoch db_securityadmin fasta databasroller.

sys.sql_expression_dependencies
Kräver VIEW DEFINITION-behörighet för databasen och SELECT-behörighet på sys.sql_expression_dependencies för databasen. Som standard beviljas SELECT-behörighet endast till medlemmar i den db_owner fasta databasrollen. När behörigheterna SELECT och VIEW DEFINITION beviljas till en annan användare kan den beviljade användaren visa alla beroenden i databasen.

Använda SQL Server Management Studio

För att visa definitionen av en DML-utlösare

  1. I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera den databas som du vill använda, expandera Tabelleroch expandera sedan tabellen som innehåller utlösaren som du vill visa definitionen för.

  3. Expandera Utlösare, högerklicka på den utlösare du vill, och klicka sedan på Ändra. Definitionen av DML-utlösaren visas i frågefönstret.

Visa beroenden för en DML-utlösare

  1. I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera den databas som du vill använda, expandera Tabelleroch expandera sedan tabellen som innehåller utlösaren och dess beroenden som du vill visa.

  3. Expandera Utlösare, högerklicka på den utlösare du vill och klicka sedan på Visa beroenden.

  4. I fönstret Object Dependencies väljer du Objekt som är beroende av <DML-utlösarnamn>om du vill visa de objekt som är beroende av DML-utlösaren. Objekten visas i området Beroenden.

    Om du vill visa de objekt som DML är beroende av väljer du Objekt som <DML-utlösarnamn> beror på. Objekten visas i området Beroenden. Expandera varje nod för att se alla objekt.

  5. Om du vill hämta information om ett objekt som visas i området Beroenden klickar du på objektet. I fältet Markerat objekt finns information i rutorna Namn, Typoch Beroendetyp.

  6. Om du vill stänga fönstret objektberoenden klickar du på OK.

Använda Transact-SQL

För att visa definitionen av en DML-utlösare

  1. Anslut till databasmotorn.

  2. I standardfältet klickar du på Ny fråga.

  3. Kopiera och klistra in något av följande exempel i frågefönstret och klicka på Kör. Varje exempel visar hur du kan visa definitionen av iuPerson-triggern.

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  
  

Visa beroendena av en DML-utlösare

  1. Anslut till databasmotorn.

  2. I standardfältet klickar du på Ny fråga.

  3. Kopiera och klistra in något av följande exempel i frågefönstret och klicka på Kör. Varje exempel visar hur du kan visa beroenden för iuPerson utlösare.

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  
  

Visa information om DML-utlösare i databasen

  1. Anslut till databasmotorn.

  2. I standardfältet klickar du på Ny fråga.

  3. Kopiera och klistra in något av följande exempel i frågefönstret och klicka på Kör. Varje exempel visar hur du kan visa information om DML-utlösare (TR) i databasen.

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  
  

Visa information om händelser som utlöser en DML-utlösare

  1. Anslut till databasmotorn.

  2. I standardfältet klickar du på Ny fråga.

  3. Kopiera och klistra in något av följande exempel i frågefönstret och klicka på Kör. Varje exempel visar hur du kan se de händelser som utlöser iuPerson trigger.

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  

Se även

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
AKTIVERA UTLÖSARE (Transact-SQL)
INAKTIVERA UTLÖSARE (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)