Informatie Krijgen Over DML-Triggers

  • Artikel
  • 12/17/2021
  • 4 minuten te lezen
    • M
    • r
    • c
    • p
Is deze pagina nuttig?

Dank u.

is van toepassing op: yesSQL Server (alle ondersteunde versies) JaAzure SQL Database

dit onderwerp beschrijft hoe u informatie kunt krijgen over DML-triggers in SQL Server met behulp van SQL Server Management Studio of Transact-SQL. Deze informatie kan de soorten triggers op een tabel bevatten, de naam van een trigger, de eigenaar en de datum waarop deze is gemaakt of gewijzigd. Als de trigger niet versleuteld was toen hij werd gemaakt, verkrijgt u de definitie van de trigger. U kunt de definitie gebruiken om u te helpen begrijpen hoe een trigger de tabel waarop het is gedefinieerd beïnvloedt. Ook, kunt u erachter te komen de objecten die een specifieke trigger 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:

    Beveiliging

  • om informatie Te krijgen over DML triggers gebruiken:

    SQL Server Management Studio

    Transact-SQL

Voordat Je Begint

Beveiliging

Rechten

sys.SQL.modules, sys.bezwaar, sys.triggers, sys.gebeurtenissen, sys.trigger_events
de zichtbaarheid van de metadata in catalogusweergaven is beperkt tot beveiligingen die een gebruiker bezit of waarvoor de gebruiker enige toestemming heeft gekregen. Zie metadata-Zichtbaarheidsconfiguratie voor meer informatie.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
vereist lidmaatschap van de publieke rol. De definitie van gebruikersobjecten is zichtbaar voor de objecteigenaar of begunstigden die een van de volgende machtigingen hebben: definitie wijzigen, beheren, eigendom nemen of bekijken. Deze rechten worden impliciet gehouden door leden van de vaste databaserollen db_owner, db_ddladmin en db_securityadmin.

sys.sql_expression_dependencies
vereist toestemming voor DEFINITIEWEERGAVE in de database en selecteer toestemming voor sys.sql_expression_dependencies voor de database. Standaard wordt select permission alleen verleend aan leden van de vaste database-rol van db_owner. Wanneer DEFINITIEMACHTIGINGEN selecteren en bekijken worden verleend aan een andere gebruiker, kan de grantee alle afhankelijkheden in de database bekijken.

SQL Server Management Studio

gebruiken om de definitie van een DML-trigger te bekijken

  1. in Object Explorer, verbinding maken met een instantie van Database Engine en vervolgens uit te breiden die instantie.

  2. vouw de gewenste database uit, vouw tabellen uit en vouw vervolgens de tabel uit met de trigger waarvoor u de definitie wilt bekijken.

  3. vouw Triggers uit, klik met de rechtermuisknop op de gewenste trigger en klik vervolgens op Wijzigen. De definitie van de DML trigger verschijnt in het query venster.

de afhankelijkheden van een DML-trigger weergeven

  1. in Object Explorer, verbinding maken met een instantie van Database Engine en vervolgens uit te breiden die instantie.

  2. vouw de gewenste database uit, vouw tabellen uit en vouw vervolgens de tabel uit die de trigger en de bijbehorende afhankelijkheden bevat die u wilt weergeven.

  3. vouw Triggers uit, klik met de rechtermuisknop op de gewenste trigger en klik vervolgens op Afhankelijkheden weergeven.

  4. selecteer in het venster object afhankelijkheden objecten die afhankelijk zijn van de DML-trigger die afhankelijk zijn van <DML-triggernaam>om de objecten te bekijken die afhankelijk zijn van de DML-trigger. De objecten verschijnen in het gebied afhankelijkheden.

    om de objecten te bekijken waarvan de DML afhankelijk is, selecteert u objecten waarvan <DML-triggernaam> afhankelijk is. De objecten verschijnen in het gebied afhankelijkheden. Vouw elk knooppunt uit om alle objecten te zien.

  5. als u informatie wilt verkrijgen over een object dat wordt weergegeven in het gebied afhankelijkheden, klikt u op het object. In het veld geselecteerd object wordt informatie verstrekt in de vakken naam, Type en Afhankelijkheidstype.

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

Transact-SQL

gebruiken om de definitie van een DML-trigger te bekijken

  1. verbinding maken met de database Engine.

  2. Klik in de Standaardbalk op nieuwe Query.

  3. kopieer en plak een van de volgende voorbeelden in het query-venster en klik op Uitvoeren. Elk voorbeeld laat zien hoe u de definitie van de iuPerson trigger kunt bekijken.

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 

de afhankelijkheden van een DML-trigger weergeven

  1. verbinding maken met de database Engine.

  2. Klik in de Standaardbalk op nieuwe Query.

  3. kopieer en plak een van de volgende voorbeelden in het query-venster en klik op Uitvoeren. Elk voorbeeld laat zien hoe u de afhankelijkheden van iuPerson trigger kunt bekijken.

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 

informatie over DML-triggers weergeven in de database

  1. verbinding maken met de database Engine.

  2. Klik in de Standaardbalk op nieuwe Query.

  3. kopieer en plak een van de volgende voorbeelden in het query-venster en klik op Uitvoeren. Elk voorbeeld laat zien hoe u informatie over DML-triggers (TR) in de database kunt bekijken.

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 

informatie weergeven over gebeurtenissen die een DML-trigger afvuren

  1. verbinding maken met de database Engine.

  2. Klik in de Standaardbalk op nieuwe Query.

  3. kopieer en plak een van de volgende voorbeelden in het query-venster en klik op Uitvoeren. Elk voorbeeld laat zien hoe u de gebeurtenissen kunt bekijken die de iuPerson trigger afvuren.

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 

zie ook

Trigger aanmaken (Transact-SQL)
trigger activeren (Transact-SQL)
TRIGGER uitschakelen (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
Trigger veranderen (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)

Write a Comment

Het e-mailadres wordt niet gepubliceerd.