Exemplarische Vorgehensweise: Debuggen eines T-SQL-Triggers
Aktualisiert: November 2007
Dieses Thema gilt für folgende Anwendungsbereiche:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
![]() |
![]() |
![]() |
![]() |
Standard |
![]() |
![]() |
![]() |
![]() |
Pro und Team |
![]() |
![]() |
![]() |
![]() |
Tabellenlegende:
![]() |
Vorhanden |
![]() |
Nicht vorhanden |
![]() |
Befehl oder Befehle, die standardmäßig ausgeblendet sind. |
Zum Debuggen eines Triggers legen Sie einen Haltepunkt in einer gespeicherten Prozedur fest, die den Trigger auslöst, und legen dann einen Haltepunkt im Trigger selbst fest. Setzen Sie den Vorgang anschließend fort, wie unter Exemplarische Vorgehensweise: Debuggen einer gespeicherten T-SQL-Prozedur beschrieben.
In diesem Beispiel wird die Datenbank AdventureWorks verwendet, die die Tabelle Sales.Currency mit einem UPDATE-Trigger enthält. Das Beispiel enthält eine gespeicherte Prozedur, die eine Zeile in der Tabelle aktualisiert und dadurch den Trigger auslöst. Legen Sie Haltepunkte im Trigger fest. Anschließend können Sie verschiedene Ausführungspfade im Trigger verfolgen, indem Sie die gespeicherte Prozedur mit verschiedenen Parametern ausführen.
![]() |
---|
Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
So debuggen Sie einen SQL-Trigger
Stellen Sie in einem neuen SQL Server-Projekt eine Verbindung mit der Beispieldatenbank AdventureWorks her. Weitere Informationen finden Sie unter Gewusst wie: Herstellen einer Verbindung zu einer Datenbank.
Erstellen Sie mit dem Code des ersten Beispielabschnitts unten eine neue gespeicherte Prozedur, und nennen Sie sie UpdateCurrency_T_SQL. Weitere Informationen finden Sie unter Gewusst wie: Entwickeln mit dem SQL Server-Projekttyp.
Legen Sie Haltepunkte in UpdateCurrency_T_SQL fest. Dieser Schritt ist optional, da beim direkten Datenbankdebuggen die erste Zeile der Prozedur als Haltepunkt fungiert.
Legen Sie Haltepunkte für den Trigger fest.
Öffnen Sie den Quellcode des Triggers, indem Sie mit der rechten Maustaste auf den Knoten Tabellen und dann auf den Knoten der Tabelle Sales.Currency klicken. Doppelklicken Sie anschließend auf das Symbol für den Trigger uCurrency.
Klicken Sie neben der SET NOCOUNT ON-Anweisung auf den grauen Rand, um einen Haltepunkt im Trigger festzulegen. Dieser Schritt ist unbedingt erforderlich: Wenn Sie keinen Haltepunkt im Trigger festlegen, wird der Code übersprungen, wenn Sie versuchen, ihn in Einzelschritten auszuführen.
Führen Sie die gespeicherte Prozedur in Einzelschritten aus. Weitere Informationen finden Sie unter Gewusst wie: Ausführen von Einzelschritten in Objekten mithilfe von Server-Explorer.
Das Dialogfeld Gespeicherte Prozedur ausführen wird geöffnet. In diesem Dialogfeld werden die Parameterwerte abgefragt.
Legen Sie die folgenden Parameterwerte fest:
@currencyCode = AAA
@name = ein beliebiger Wert, z. B. My Test Name.
Der gelbe Pfeil eines Anweisungszeigers wird in der Zeile SET @mynvarchar = @@VERSION angezeigt. Es handelt sich hierbei um die erste ausführbare Codezeile der gespeicherten Prozedur.
Testen Sie verschiedene Debugfeatures.
Durchlaufen Sie den Code, indem Sie die F11-TASTE oder die Schaltfläche Einzelschritt verwenden.
Wenn Sie an der Position der UPDATE-Anweisung erneut die F11-TASTE drücken, wird der Trigger in Einzelschritten ausgeführt.
Durchlaufen Sie den Trigger, bis Sie zur gespeicherten Prozedur zurückkehren, und fahren Sie bis zum Ende fort.
In Server-Explorer können Sie sich vergewissern, dass die Daten eingefügt wurden. Klicken Sie dazu unter Tabellen mit der rechten Maustaste auf den Knoten Sales.Currency, und klicken Sie dann auf Tabellendaten anzeigen.
Beispiel
Dies ist der Code für die gespeicherte Prozedur, über die der Trigger ausgelöst wird.
ALTER PROCEDURE dbo.UpdateCurrency_T_SQL
(
@currencyCode nvarchar(3),
@Name nvarchar(50)
)
AS
SET NOCOUNT ON
UPDATE Sales.Currency
SET Name = @Name
WHERE CurrencyCode = @currencyCode
RETURN