Exemplarische Vorgehensweise: Debuggen eines SQL/CLR-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.

In diesem Beispiel wird das Debuggen eines SQL/CLR-Triggers veranschaulicht. Dazu wird die Tabelle Contact aus der Beispieldatenbank AdventureWorks verwendet. Dies ist eine der Datenbanken, die mit SQL Server 2005 installiert werden. Im Beispiel wird in der Tabelle Contact ein neuer CLR-Trigger erstellt und in Einzelschritten ausgeführt.

Hinweis:

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/CLR-Trigger

  1. Stellen Sie in einem neuen SQL Server-Projekt eine Verbindung zur Datenbank AdventureWorks her. Weitere Informationen finden Sie unter Gewusst wie: Herstellen einer Verbindung zu einer Datenbank.

  2. Erstellen Sie mit dem Code des ersten Beispielabschnitts unten einen neuen Trigger, und nennen Sie ihn iContact.cs. Weitere Informationen finden Sie unter Gewusst wie: Entwickeln mit dem SQL Server-Projekttyp.

  3. Fügen Sie ein Skript hinzu, das den Trigger durch Auslösen testet. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Verzeichnis TestScripts, klicken Sie auf Testskript hinzufügen, und fügen Sie den Code aus dem zweiten Beispielabschnitt (siehe unten) ein. Speichern Sie die Datei unter dem Namen truContact.sql. Klicken Sie mit der rechten Maustaste auf den Dateinamen, und klicken Sie auf Als Standardskript zum Debuggen festlegen.

  4. Legen Sie in iContact.cs Haltepunkte fest, und klicken Sie dann im Menü Debuggen auf Starten, um das Projekt zu kompilieren, bereitzustellen und einem Komponententest zu unterziehen. Wenn der durch einen gelben Pfeil gekennzeichnete Anweisungszeiger an einem Haltepunkt angezeigt wird, wurde das Debuggen des Triggers gestartet.

  5. Testen Sie verschiedene Debugfeatures.

    1. Überspringen Sie die Anweisung, die den SqlTriggerContext instanziiert.

    2. Öffnen Sie das Fenster Lokal. Beachten Sie, dass Sie die Variable triggContext (die ein SqlTriggerContext ist) öffnen und deren Member untersuchen können. Weitere Informationen finden Sie unter Gewusst wie: Verwenden von Debuggervariablenfenstern.

      Hinweis:

      Änderungen, die in den Debuggerfenstern an den Werten der Variablen vorgenommen werden, gibt der Server unter Umständen nicht wieder. Weitere Informationen finden Sie unter Einschränkungen des SQL-Debuggers.

    3. Wählen Sie im Menü Debuggen die Option Einzelschritt aus, um zur nächsten Zeile in der gespeicherten Prozedur zu wechseln. Wie Sie sehen, wurde bei der Ausführung der Wert der Variablen sqlP vom Typ SqlPipe instanziiert.

    4. Öffnen Sie das Fenster Überwachen. Ziehen Sie die Variable sqlP an eine beliebige Position im Fenster Überwachen. Daraufhin wird die Variable der Liste der überwachten Variablen hinzugefügt. Weitere Informationen finden Sie unter Gewusst wie: Verwenden von Debuggervariablenfenstern.

      Hinweis:

      Sie können Variablenwerte im Fenster Überwachen auch bearbeiten.

    5. Klicken Sie im Text-Editor mit der rechten Maustaste auf die letzte Zeile, und klicken Sie auf Haltepunkt einfügen.

    6. Klicken Sie im Menü Debuggen auf Weiter. Der Debugger führt den Code daraufhin bis zum neuen Haltepunkt aus.

  6. Klicken Sie nochmals auf Weiter, um das Debuggen des Triggers abzuschließen. Im Ausgabefenster wird eine Meldung angezeigt, aus der hervorgeht, dass der Trigger erfolgreich bereitgestellt wurde. Darüber hinaus wird das Ergebnis für die Ausführung der Befehle in der Datei truContact.sql angezeigt.

Beispiel

Dies ist der erforderliche Code zur Erstellung des in diesem Beispiel verwendeten Triggers.

using System;
using System.Data;
using System.Data.Sql;
using Microsoft.SqlServer.Server;


public partial class Triggers
{
      // Enter existing table or view for the target and uncomment the attribute line.
      [Microsoft.SqlServer.Server.SqlTrigger (Name="Trigger1", Target="primes", Event="FOR UPDATE")]
      public static void Trigger1()
      {
            SqlTriggerContext triggContext = SqlContext.TriggerContext;
            SqlPipe sqlP = SqlContext.Pipe;
            sqlP.Send("primes inserted!");
      }
}

Dies ist das Testskript, durch das der Trigger ausgelöst wird.

UPDATE Person.Contact SET MiddleName = 'A' WHERE ContactID = 8

Siehe auch

Aufgaben

Gewusst wie: Erstellen und Ausführen eines CLR SQL Server-Triggers

Weitere Ressourcen

Debuggen von SQL CLR-Datenbanken