få Information om DML-utlösare

  • artikel
  • 12/17/2021
  • 4 minuter att läsa
    • M
    • r
    • c
    • p
är den här sidan till hjälp?

tack.

gäller för: yesSQL Server (alla versioner som stöds)Ja Azure SQL Database

i det här avsnittet beskrivs hur du får information om DML-utlösare i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. Denna information kan innehålla typerna av utlösare på ett bord, namnet på en utlösare, dess ägare och datumet 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 hjälpa dig att förstå hur en utlösare påverkar tabellen där den definieras. Du kan också ta reda på de 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 raderas i databasen.

i detta ämne

  • innan du börjar:

    säkerhet

  • för att få information om DML triggers, med hjälp av:

    SQL Server Management Studio

    Transact-SQL

innan du börjar

säkerhet

behörigheter

sys.SQL.moduler, sys.objekt, sys.utlösare, sys.händelser, sys.trigger_events
synligheten för metadata i katalogvyer är begränsad till säkerheter som en användare antingen äger eller som användaren har fått viss behörighet på. Mer information finns i Metadatasynlighetskonfiguration.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
kräver medlemskap i den offentliga rollen. Definitionen av användarobjekt är synlig för objektets ägare eller bidragsmottagare som har någon av följande behörigheter: ändra, kontrollera, Ta äganderätt eller visa DEFINITION. Dessa behörigheter innehas implicit av medlemmar i db_owner, db_ddladmin och db_securityadmin fasta databasroller.

sys.sql_expression_dependencies
kräver VIEW DEFINITION tillstånd i databasen och välj tillstånd på sys.sql_expression_dependencies för databasen. Som standard beviljas SELECT-behörighet endast till medlemmar i rollen db_owner fixed database. När behörigheterna Välj och visa DEFINITION beviljas en annan användare kan bidragsmottagaren visa alla beroenden i databasen.

använda SQL Server Management Studio

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

  1. i Object Explorer ansluter du till en instans av Database Engine och expanderar sedan den instansen.

  2. expandera den databas som du vill använda, expandera tabeller och 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 använda 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 Explorer ansluter du till en instans av Database Engine och expanderar sedan den instansen.

  2. expandera den Databas du vill använda, expandera tabeller och 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 använda och klicka sedan på Visa beroenden.

  4. om du vill visa objekt som är beroende av DML-utlösaren väljer du objekt som är beroende av <DML-utlösarnamn>i fönstret Objektberoende. Objekten visas i området beroenden.

    om du vill visa de objekt som DML beror på 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 få information om ett objekt som visas i området beroenden klickar du på objektet. I fältet markerat objekt finns information i rutorna namn, typ och Beroendetyp.

  6. om du vill stänga fönstret Objektberoende klickar du på OK.

använda Transact-SQL

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

  1. Anslut till databasmotorn.

  2. klicka på ny fråga i standardfältet.

  3. kopiera och klistra in ett av följande exempel i frågefönstret och klicka på Kör. Varje exempel visar hur du kan visa definitionen av utlösaren 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 

Visa beroenden för en DML-utlösare

  1. Anslut till databasmotorn.

  2. klicka på ny fråga i standardfältet.

  3. kopiera och klistra in ett av följande exempel i frågefönstret och klicka på Kör. Varje exempel visar hur du kan Visa beroenden av 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 

visa information om DML-utlösare i databasen

  1. Anslut till databasmotorn.

  2. klicka på ny fråga i standardfältet.

  3. kopiera och klistra in ett 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 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 

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

  1. Anslut till databasmotorn.

  2. klicka på ny fråga i standardfältet.

  3. kopiera och klistra in ett av följande exempel i frågefönstret och klicka på Kör. Varje exempel visar hur du kan visa de händelser som utlöser iuPerson – utlösaren.

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 

Se även

skapa TRIGGER (Transact-SQL)
släpp TRIGGER (Transact-SQL)
aktivera TRIGGER (Transact-SQL)
inaktivera TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ändra TRIGGER (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.utlösare (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

Din e-postadress kommer inte publiceras.