Exemplarische Vorgehensweise: Debuggen einer benutzerdefinierten SQL/CLR-Skalarfunktion

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 veranschaulicht, wie eine benutzerdefinierte SQL/CLR-Funktion gedebuggt wird. Dabei wird in der Beispieldatenbank AdventureWorks eine neue benutzerdefinierte SQL/CLR-Funktion erstellt.

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 eine benutzerdefinierte SQL/CLR-Skalarfunktion

  1. 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.

  2. Erstellen Sie mit dem Code des ersten Beispielabschnitts unten eine neue Funktion, und nennen Sie sie OrderCount.cs. Weitere Informationen finden Sie unter Gewusst wie: Entwickeln mit dem SQL Server-Projekttyp.

  3. Fügen Sie ein Skript hinzu, das die Funktion durch Einschließen in eine SELECT-Anweisung 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 CallOrderCount.sql. Klicken Sie mit der rechten Maustaste auf den Dateinamen, und wählen Sie Als Standardskript zum Debuggen festlegen aus.

  4. Legen Sie in OrderCount.cseinen Haltepunkt für die Zeile fest, die einen SqlCommand instanziiert, 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 am Haltepunkt angezeigt wird, wurde das Debuggen der Funktion gestartet.

  5. Testen Sie verschiedene Debugfeatures.

    1. Überspringen Sie die Anweisung, durch die SqlCommand mithilfe von Einzelschritt im Menü Debuggen instanziiert wird.

    2. Öffnen Sie im Fenster Lokal die Variable sqlComm (die ein SqlCommand ist), und untersuchen Sie deren Member.

    3. Klicken Sie im Menü Debuggen auf Einzelschritt, um in der Funktion zur nächsten Zeile zu wechseln. Wie Sie sehen, wurde der Member sqlComm.CommandText instanziiert.

    4. Ziehen Sie im Text-Editor sqlComm an eine beliebige Position im Fenster Überwachen. Daraufhin wird die Variable der Liste der überwachten Variablen hinzugefügt.

    5. Wählen Sie erneut Einzelschritt aus, und beachten Sie, dass ein neues Fenster mit dem Namen Dynamisches T-SQL geöffnet wird. Darin wird die SQL-Anweisung angezeigt, die als Nächstes ausgeführt wird.

    6. Wählen Sie Einzelschritt aus, um die Anweisung auszuführen und wieder zur Funktion zu wechseln.

    7. Klicken Sie erneut auf Weiter, und beachten Sie, dass ein zweites Fenster Dynamisches T-SQL geöffnet wird. In diesem wird der Code angezeigt, der den Wert der Funktion zurückgibt.

    8. Klicken Sie nochmals auf Weiter, um das Debuggen der Funktion abzuschließen.

Beispiel

Dies ist der Code, der für das Erstellen der Funktion erforderlich ist.

using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
 
 
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
    public static int OrderCount()
    {
        using (SqlConnection conn = new SqlConnection("context connection=true"))
            {
                  conn.Open();
                  SqlCommand cmd = new SqlCommand();
                  cmd.Connection = conn;
                  cmd.CommandText = "SELECT 42";
                  
                  //cmd = new SqlCommand("SELECT 42",conn);
 
                  int result = (int)cmd.ExecuteScalar();
                  return result;
            }
    }
};

Dies ist das Testskript, das die Funktion aufruft.

SELECT dbo.OrderCount()

Siehe auch

Aufgaben

Gewusst wie: Erstellen und Ausführen einer benutzerdefinierten CLR SQL Server-Funktion

Weitere Ressourcen

Debuggen von SQL CLR-Datenbanken