Freigeben über


Gewusst wie: Debuggen einer gespeicherten Prozedur in SQL/CLR

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.

Eine vorhandene gespeicherte SQL/CLR-Prozedur wird ebenso wie eine T-SQL-Prozedur mit direktem Datenbankdebuggen gedebuggt. Dies funktioniert jedoch nicht, wenn eine SQL/CLR-Prozedur erstellt oder geändert werden muss, weil Sie diese kompilieren und bereitstellen müssen. Diese Schritte kommen bei T-SQL-Prozeduren nicht vor. In diesem Fall müssen Sie in Visual Studio ein SQL Server-Projekt erstellen.

In der folgenden Aufgabe wird eine neue gespeicherte SQL/CLR-Prozedur in der Adventureworks-Datenbank erstellt, einer der Datenbanken, die mit SQL Server 2005 installiert werden, und anschließend wird veranschaulicht, wie sie gedebuggt wird. Sie erstellen eine gespeicherte Prozedur, die der Sales.Currency-Tabelle eine neue Währung hinzufügt.

Der Schwerpunkt dieses Beispiels liegt auf dem Debuggen innerhalb eines SQL Server-Projekts. Sobald Sie die gespeicherte Prozedur erstellt haben, können Sie sie mit direktem Datenbankdebuggen debuggen. Weitere Informationen finden Sie unter Gewusst wie: Ausführen von Einzelschritten in Objekten mithilfe von Server-Explorer.

Hinweis:

Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. 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 eine gespeicherte SQL/CLR-Prozedur

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

  2. Erstellen Sie mit dem Code des ersten Beispielabschnitts (siehe unten) eine neue gespeicherte Prozedur, und nennen Sie sie InsertCurrency.cs. Weitere Informationen finden Sie unter Gewusst wie: Entwickeln mit dem SQL Server-Projekttyp.

  3. Fügen Sie ein Skript hinzu, das die gespeicherte Prozedur testet, indem es sie aufruft. 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 der folgenden Beispielabschnitte ein. Speichern Sie die Datei unter dem Namen InsertCurrency.sql. Klicken Sie mit der rechten Maustaste auf den Dateinamen, und klicken Sie auf Als Standardskript zum Debuggen festlegen.

  4. Legen Sie in InsertCurrency.cs Haltepunkte fest, und klicken Sie dann im Menü Debuggen auf Start, 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 der gespeicherten Prozedur gestartet.

  5. Testen Sie verschiedene Debugfeatures.

    1. Öffnen Sie das Fenster Lokal, und klicken Sie dann im Menü Debuggen auf Einzelschritt, um die gespeicherte Prozedur zeilenweise auszuführen. Beachten Sie, dass der Wert der @mynvarchar-Variablen im Lokalfenster geändert wurde und dass ihr Wert nun in rot angezeigt wird, was auf die Änderung hinweist. Weitere Informationen finden Sie unter Verwenden des Lokalfensters.

      Hinweis:

      Änderungen an Variablenwerten in den Debuggerfenstern werden im Server unter Umständen nicht wiedergegeben. Weitere Informationen finden Sie unter Einschränkungen des SQL-Debuggers.

    2. Öffnen Sie das Fenster Überwachen. Ziehen Sie im Text-Editor die Variable InsertCurrencyCommand auf 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 Überwachungsfenster auch bearbeiten.

    3. Klicken Sie im Text-Editor mit der rechten Maustaste auf die Zeile InsertCurrencyCommand.ExecuteNonQuery, und klicken Sie im Kontextmenü auf die Option Haltepunkt einfügen.

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

  6. Klicken Sie erneut auf Weiter, um die gespeicherte Prozedur vollständig zu debuggen.

    Im Fenster Ausgabe wird eine Meldung angezeigt, die angibt, dass die gespeicherte Prozedur erfolgreich bereitgestellt wurde. Darüber hinaus werden die Ergebnisse der Ausführung der Befehle aus der Datei InsertCurrency.sql angezeigt.

Beispiel

Ersetzen Sie die Vorlage der gespeicherten Prozedur durch diesen Code.

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;

public partial class StoredProcedures
{
    [SqlProcedure]
    public static void InsertCurrency(SqlString currencyCode, 
                                               SqlString name)
    {
        using(SqlConnection conn = new SqlConnection("context connection=true")) {
        SqlCommand cmd = new SqlCommand([your SQL statement], conn);
        }
        InsertCurrencyCommand.CommandText = "insert Sales.Currency"
                     + " (CurrencyCode, Name, ModifiedDate) values('" 
                     + currencyCode.ToString() + "', '" 
                     + name.ToString() + "', '" 
                     + DateTime.Now.ToString() + "')";
        InsertCurrencyCommand.ExecuteNonQuery();
    }
}

Dies ist das Testskript, das verwendet wird, um die gespeicherte Prozedur auszuführen.

- Delete any row that might exist with a key value
- that matches the one we are going to insert
DELETE Sales.Currency
WHERE CurrencyCode = 'eee'
EXEC InsertCurrency 'eee', 'MyCurr4'
SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'

Siehe auch

Aufgaben

Gewusst wie: Erstellen und Ausführen einer gespeicherten CLR SQL Server-Prozedur

Weitere Ressourcen

Debuggen von SQL CLR-Datenbanken