Delen via


Informatie over DML-triggers ophalen

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

In dit onderwerp wordt beschreven hoe u informatie krijgt over DML-triggers in SQL Server met behulp van SQL Server Management Studio of Transact-SQL. Deze informatie kan bestaan uit de typen triggers in een tabel, de naam van een trigger, de eigenaar en de datum waarop deze is gemaakt of gewijzigd. Als de trigger niet is versleuteld toen deze werd gemaakt, verkrijgt u de definitie van de trigger. U kunt de definitie gebruiken om te begrijpen hoe een trigger van invloed is op de tabel waarop deze is gedefinieerd. U kunt ook de objecten vinden die door een specifieke trigger worden gebruikt. Met deze informatie kunt u de objecten identificeren die van invloed zijn op de trigger als ze worden gewijzigd of verwijderd in de database.

in dit onderwerp

Voordat u begint

Veiligheid

Machtigingen

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
De zichtbaarheid van de metagegevens in catalogusweergaven is beperkt tot beveiligbare items waarvan een gebruiker eigenaar is of waarvoor de gebruiker een bepaalde machtiging heeft gekregen. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.

OBJECT_DEFINITION OBJECTPROPERTY, sp_helptext
Vereist lidmaatschap van de openbare rol. De definitie van gebruikersobjecten is zichtbaar voor de objecteigenaar of ontvangers van een van de volgende machtigingen: ALTER, CONTROL, TAKE OWNERSHIP of VIEW DEFINITION. Deze machtigingen worden impliciet bewaard door leden van de db_owner, db_ddladminen db_securityadmin vaste databaserollen.

sys.sql_expression_afhankelijkheden
Vereist de machtiging VIEW DEFINITION voor de database en de SELECT-machtiging voor sys.sql_expression_afhankelijkheden voor de database. Select-machtigingen worden standaard alleen verleend aan leden van de db_owner vaste databaserol. Wanneer SELECT- en VIEW DEFINITION-machtigingen worden verleend aan een andere gebruiker, kan de grantee alle afhankelijkheden in de database bekijken.

SQL Server Management Studio gebruiken

De definitie van een DML-trigger weergeven

  1. Maak in Objectverkennerverbinding met een exemplaar van Database Engine en breid dat exemplaar vervolgens uit.

  2. Vouw de gewenste database uit, vouw tabellenuit en vouw vervolgens de tabel uit die de trigger bevat waarvoor u de definitie wilt weergeven.

  3. Vouw triggersuit, klik met de rechtermuisknop op de gewenste trigger en klik vervolgens op Wijzigen. De definitie van de DML-trigger wordt weergegeven in het queryvenster.

De afhankelijkheden van een DML-trigger weergeven

  1. Maak in Objectverkennerverbinding met een exemplaar van Database Engine en vouw vervolgens dat exemplaar uit.

  2. Vouw de gewenste database uit, vouw tabellenuit en vouw vervolgens de tabel uit met de trigger en de bijbehorende afhankelijkheden die u wilt weergeven.

  3. Vouw triggersuit, klik met de rechtermuisknop op de gewenste trigger en klik vervolgens op Afhankelijkheden weergeven.

  4. Selecteer in het venster Objectafhankelijkheden de optie Objecten die afhankelijk zijn van <DML-triggernaam>om de objecten weer te geven die afhankelijk zijn van de DML-trigger. De objecten worden weergegeven in het gebied Afhankelijkheden.

    Als u de objecten wilt weergeven waarvan de DML afhankelijk is, selecteert u objecten waarvan <DML-triggernaam> afhankelijk is van. De objecten worden weergegeven in het gebied Afhankelijkheden. Vouw elk knooppunt uit om alle objecten weer te geven.

  5. Als u informatie wilt verkrijgen over een object dat wordt weergegeven in het afhankelijkheden gebied, klikt u op het object. In het veld Geselecteerd object wordt informatie opgegeven in de vakken Name, Typeen Dependency type.

  6. Als u het venster Objectafhankelijkheden wilt sluiten, klikt u op OK-.

Transact-SQL gebruiken

De definitie van een DML-trigger weergeven

  1. Maak verbinding met de database-engine.

  2. Klik in de standaardbalk op Nieuwe query.

  3. Kopieer en plak een van de volgende voorbeelden in het queryvenster en klik op uitvoeren. In elk voorbeeld ziet u hoe u de definitie van de iuPerson trigger kunt bekijken.

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  
  

De afhankelijkheden van een DML-trigger weergeven

  1. Maak verbinding met de database-engine.

  2. Klik in de standaardbalk op Nieuwe query.

  3. Kopieer en plak een van de volgende voorbeelden in het queryvenster en klik op uitvoeren. In elk voorbeeld ziet u hoe u de afhankelijkheden van iuPerson trigger kunt bekijken.

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  
  

Informatie over DML-triggers weergeven in de database

  1. Maak verbinding met de database-engine.

  2. Klik in de standaardbalk op Nieuwe query.

  3. Kopieer en plak een van de volgende voorbeelden in het queryvenster en klik op uitvoeren. In elk voorbeeld ziet u hoe u informatie over DML-triggers (TR) in de database kunt bekijken.

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  
  

Informatie weergeven over gebeurtenissen die een DML-trigger activeren

  1. Maak verbinding met de database-engine.

  2. Klik in de Standaardbalk op Nieuwe query.

  3. Kopieer en plak een van de volgende voorbeelden in het queryvenster en klik op uitvoeren. In elk voorbeeld ziet u hoe u de gebeurtenissen kunt bekijken die de iuPerson trigger activeren.

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  

Zie ook

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
TRIGGER INSCHAKELEN (Transact-SQL)
TRIGGER UITSCHAKELEN (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)