Abrufen von Informationen zu DML-Triggern

In diesem Thema wird beschrieben, wie Sie Informationen zu DML-Triggern in SQL Server 2012 mithilfe von SQL Server Management Studio oder Transact-SQL abrufen. Zu diesen Informationen können die Triggertypen für eine Tabelle, der Name eines Triggers, sein Besitzer und das Erstellungs- oder Änderungsdatum zählen. Wenn der Trigger bei der Erstellung nicht verschlüsselt wurde, erhalten Sie die Definition des Triggers. Die Definition gibt Aufschluss darüber, wie sich ein Trigger auf die Tabelle auswirkt, für die er definiert ist. Zudem können Sie die Objekte feststellen, die von einem bestimmten Trigger verwendet werden. Mithilfe dieser Informationen können Sie die Objekte identifizieren, deren Änderung oder Löschung in der Datenbank sich auf den Trigger auswirkt.

In diesem Thema

  • Vorbereitungen:

    Sicherheit

  • Abrufen von Informationen zu DML-Triggern mit:

    SQL Server Management Studio

    Transact-SQL

Vorbereitungen

Sicherheit

Berechtigungen

  • 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 Konfigurieren der Sichtbarkeit von Metadaten.

  • 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_ddladmin und db_securityadmin.

  • sys.sql_expression_dependencies
    Erfordert die VIEW DEFINITION-Berechtigung für die Datenbank und die SELECT-Berechtigung für sys.sql_expression_dependencies für die Datenbank. Standardmäßig wird die SELECT-Berechtigung nur Mitgliedern der festen Datenbankrolle db_owner 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.

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

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 von Database Engine (Datenbankmodul) her, und erweitern Sie dann diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, Tabellen und dann die Tabelle mit dem Trigger, dessen Definition Sie anzeigen möchten.

  3. Erweitern Sie Trigger, klicken Sie mit der rechten Maustaste auf den gewünschten Trigger, und klicken Sie anschließend 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 von Database Engine (Datenbankmodul) her, und erweitern Sie dann diese Instanz.

  2. Erweitern Sie die gewünschte Datenbank, Tabellen und dann die Tabelle mit dem Trigger, dessen Abhängigkeiten 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 Option Objekte, die von <DML-Triggername> abhängig sind aus, um die vom DML-Trigger abhängigen Objekte anzuzeigen. Die Objekte werden im Bereich Abhängigkeiten angezeigt.

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

  5. Wenn Sie Informationen zu einem im Bereich Abhängigkeiten angezeigten Objekt anzeigen möchten, klicken Sie auf das Objekt. Im Feld Ausgewähltes Objekt sind Informationen in den Feldern Name, Typ und Abhängigkeitstyp verfügbar.

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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Verwendung von Transact-SQL

So zeigen Sie die Definition eines DML-Triggers an

  1. Stellen Sie eine Verbindung mit dem Database Engine (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. In den Beispielen wird gezeigt, 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. Stellen Sie eine Verbindung mit dem Database Engine (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. In den Beispielen wird gezeigt, wie Sie die Abhängigkeiten des iuPerson-Triggers 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 mit dem Database Engine (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. In den Beispielen wird gezeigt, 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 mit dem Database Engine (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. In den Beispielen wird gezeigt, 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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Siehe auch

Verweis

CREATE TRIGGER (Transact-SQL)

DROP TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (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)