Abrufen von Informationen zu DML-Triggern

  • Artikel
  • 12/17/2021
  • 4 minuten zum Lesen
    • M
    • r
    • c
    • p
Ist diese Seite hilfreich?

Vielen Dank.

Gilt für: yesSQL Server (alle unterstützten Versionen) JaAzure SQL-Datenbank

In diesem Thema wird beschrieben, wie Informationen zu DML-Triggern in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL abgerufen werden. Diese Informationen können die Arten von Triggern in einer Tabelle, den Namen eines Triggers, seinen Eigentümer und das Datum seiner Erstellung oder Änderung enthalten. Wenn der Trigger beim Erstellen nicht verschlüsselt wurde, erhalten Sie die Definition des Triggers. Sie können die Definition verwenden, um zu verstehen, wie sich ein Trigger auf die Tabelle auswirkt, für die er definiert ist. Außerdem können Sie die Objekte ermitteln, die ein bestimmter Trigger verwendet. Anhand dieser Informationen können Sie die Objekte identifizieren, die den Trigger beeinflussen, wenn sie in der Datenbank geändert oder gelöscht werden.

In diesem Thema

  • Bevor Sie beginnen:

    Sicherheit

  • Informationen zu DML-Triggern erhalten Sie mit:

    SQL Server Management Studio

    Transact-SQL

Bevor Sie beginnen

Sicherheit

Berechtigungen

sys.SQL.module, sys.objekt, sys.auslöser, sys.veranstaltungen, sys.trigger_events
Die Sichtbarkeit der Metadaten in Katalogansichten ist auf Sicherheiten beschränkt, die ein Benutzer besitzt oder für die ihm eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Konfiguration der Metadatensichtbarkeit.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Erfordert die Mitgliedschaft in der öffentlichen Rolle. Die Definition von Benutzerobjekten ist für den Objekteigentümer oder die Empfänger sichtbar, die über eine der folgenden Berechtigungen verfügen: ÄNDERN, STEUERN, INHABERSCHAFT ÜBERNEHMEN oder DEFINITION ANZEIGEN. Diese Berechtigungen werden implizit von Mitgliedern der festen Datenbankrollen db_owner, db_ddladmin und db_securityadmin gehalten.

sys.sql_expression_dependencies
Erfordert die Berechtigung VIEW DEFINITION für die Datenbank und SELECT für sys.sql_expression_dependencies für die Datenbank. Standardmäßig wird die SELECT-Berechtigung nur Mitgliedern der festen Datenbankrolle db_owner erteilt. Wenn einem anderen Benutzer die Berechtigungen SELECT und VIEW DEFINITION erteilt werden, kann der Empfänger alle Abhängigkeiten in der Datenbank anzeigen.

Verwenden von SQL Server Management Studio

Anzeigen der Definition eines DML-Triggers

  1. Stellen Sie im Objekt-Explorer eine Verbindung zu einer Instanz von Database Engine her, und erweitern Sie diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, erweitern Sie Tabellen, und erweitern Sie dann die Tabelle, die den Trigger enthält, für den Sie die Definition anzeigen möchten.

  3. Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den gewünschten Trigger, und klicken Sie dann auf Ändern. Die Definition des DML-Triggers wird im Abfragefenster angezeigt.

So zeigen Sie die Abhängigkeiten eines DML-Triggers an

  1. Stellen Sie im Objekt-Explorer eine Verbindung zu einer Instanz von Database Engine her, und erweitern Sie diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, erweitern Sie Tabellen, und erweitern Sie dann die Tabelle, die den Trigger und seine Abhängigkeiten enthält, die Sie anzeigen möchten.

  3. Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den gewünschten Trigger, und klicken Sie dann auf Abhängigkeiten anzeigen.

  4. Wählen Sie im Fenster Objektabhängigkeiten die Objekte aus, die vom DML-Trigger abhängen, und wählen Sie Objekte aus, die vom DML-Trigger-Namen <> abhängen, um die Objekte anzuzeigen, die vom DML-Trigger abhängen. Die Objekte werden im Bereich Abhängigkeiten angezeigt.

    Um die Objekte anzuzeigen, von denen die DML abhängt, wählen Sie Objekte aus, von denen <DML-Triggername> abhängt. Die Objekte werden im Bereich Abhängigkeiten angezeigt. Erweitern Sie jeden Knoten, um alle Objekte anzuzeigen.

  5. Klicken Sie auf das Objekt, um Informationen zu einem Objekt abzurufen, das im Bereich Abhängigkeiten angezeigt wird. Im Feld Ausgewähltes Objekt werden Informationen in den Feldern Name, Typ und Abhängigkeitstyp bereitgestellt.

  6. Klicken Sie auf OK, um das Fenster Objektabhängigkeiten zu schließen.

Verwenden von Transact-SQL

Zum Anzeigen der Definition eines DML-Triggers

  1. Stellen Sie eine Verbindung zum Datenbankmodul her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie eines der folgenden Beispiele, fügen Sie es in das Abfragefenster ein und klicken Sie auf Ausführen. Jedes Beispiel zeigt, wie Sie die Definition des Triggers iuPerson anzeigen können.

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 

So zeigen Sie die Abhängigkeiten eines DML-Triggers an

  1. Stellen Sie eine Verbindung zum Datenbankmodul her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie eines der folgenden Beispiele, fügen Sie es in das Abfragefenster ein und klicken Sie auf Ausführen. Jedes Beispiel zeigt, wie Sie die Abhängigkeiten von iuPerson Trigger anzeigen können.

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 

So zeigen Sie Informationen zu DML-Triggern in der Datenbank an

  1. Stellen Sie eine Verbindung zum Datenbankmodul her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie eines der folgenden Beispiele, fügen Sie es in das Abfragefenster ein und klicken Sie auf Ausführen. Jedes Beispiel zeigt, wie Sie Informationen zu DML-Triggern (TR) in der Datenbank anzeigen können.

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 

So zeigen Sie Informationen zu Ereignissen an, die einen DML-Trigger auslösen

  1. Stellen Sie eine Verbindung zum Datenbankmodul her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie eines der folgenden Beispiele, fügen Sie es in das Abfragefenster ein und klicken Sie auf Ausführen. Jedes Beispiel zeigt, wie Sie die Ereignisse anzeigen können, die den iuPerson -Trigger auslösen.

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 

Siehe auch

TRIGGER ERSTELLEN (Transact-SQL)
TRIGGER LÖSCHEN (Transact-SQL)
TRIGGER AKTIVIEREN (Transact-SQL)
TRIGGER DEAKTIVIEREN (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
TRIGGER ÄNDERN (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.trigger (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

Deine E-Mail-Adresse wird nicht veröffentlicht.