Freigeben über


Abrufen von Informationen zu DML-Triggern

In diesem Thema wird beschrieben, wie Sie Informationen zu DML-Triggern in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL abrufen. Diese Informationen können die Typen von Triggern in einer Tabelle, den Namen eines Triggers, den Besitzer und das Datum enthalten, an dem er erstellt oder geändert wurde. 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, auf der sie definiert ist. Außerdem können Sie die Objekte ermitteln, die ein bestimmter Trigger verwendet. Mit diesen Informationen können Sie die Objekte identifizieren, die sich auf den Auslöser auswirken, wenn sie in der Datenbank geändert oder gelöscht werden.

In diesem Themenbereich

Bevor Sie beginnen

Sicherheit

Erlaubnisse

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
Die Sichtbarkeit der Metadaten in Katalogsichten ist auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Erfordert die Mitgliedschaft in der public -Rolle. Die Definition von Benutzerobjekten ist für den Objektbesitzer sichtbar oder für Berechtigte, die über eine der folgenden Berechtigungen verfügen: ALTER, CONTROL, TAKE OWNERSHIP oder VIEW DEFINITION. Über diese Berechtigungen verfügen implizit Mitglieder der festen Datenbankrollen db_owner, db_ddladminund db_securityadmin .

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

Verwendung von SQL Server Management Studio

So zeigen Sie die Definition eines DML-Triggers an

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz der Datenbank-Engine her, und erweitern Sie dann diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, erweitern Sie Tabellen, und erweitern Sie dann die Tabelle, die den Auslöser 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 mit einer Instanz der Datenbank-Engine her, und erweitern Sie dann diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, erweitern Sie Tabellen, und erweitern Sie dann die Tabelle, die den Auslöser und dessen 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. Um die Objekte anzuzeigen, die vom DML-Trigger abhängen, wählen Sie im Fenster "Objektabhängigkeiten" die Objekte aus, die vom <DML-Triggernamen> abhängen. Die Objekte werden im Bereich "Abhängigkeiten" angezeigt.

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

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

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

Verwenden von Transact-SQL

Zeigen Sie die Definition eines DML-Triggers an

  1. Verbinden Sie sich mit der Datenbank-Engine.

  2. Klicken Sie auf 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 iuPerson Triggers 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. Verbinden Sie sich mit der Datenbank-Engine.

  2. Klicken Sie auf 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 des Triggers iuPerson 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. Verbinden Sie sich mit der Datenbank-Engine.

  2. Klicken Sie auf 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  
  

Um Informationen über Ereignisse anzuzeigen, die einen DML-Trigger auslösen

  1. Verbinden Sie sich mit der Datenbank-Engine.

  2. Klicken Sie auf 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

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
TRIGGER AKTIVIEREN (Transact-SQL)
TRIGGER DEAKTIVIEREN (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)