SQLShack

Das Debuggen ist einer der wichtigsten, aber schmerzhaftesten Teile eines Softwareprozesses. Um einige Fehler zu finden, müssen Sie den Code Schritt für Schritt ausführen, um zu sehen, welcher Abschnitt des Codes für den Fehler verantwortlich ist. Dies wird als Laufzeit-Debugging bezeichnet.

Glücklicherweise verfügt SQL Server Management Studio (SSMS) über automatisierte Debugging-Funktionen, mit denen Entwickler ihre Skripte debuggen können. In diesem Artikel werden wir anhand eines sehr einfachen Beispiels praktisch erklären, wie SSMS zum Debuggen gespeicherter Prozeduren in SQL Server verwendet werden kann.

Beispiel

In unserem Beispiel verwenden wir eine gespeicherte Prozedur „spShowOddNumbers“, die zwei Zahlen als Parameter verwendet und alle ungeraden Zahlen zwischen diesen beiden angegebenen Zahlen ausgibt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

PROZEDUR ERSTELLEN spShowOddNumbers
@LowerRange INT,
@UpperRange INT
AS
BEGIN
WHILE(@LowerRange < @UpperRange)
BEGIN
if (@LowerRange%2 != 0)
BEGIN
PRINT @LowerRange
END
SET @LowerRange = @LowerRange + 1
END
PRINT ‚GEDRUCKTE UNGERADE ZAHLEN ZWISCHEN ‚ + RTRIM(@lowerRange) + ‚ und ‚ + RTRIM(@UpperRange)
ENDE

Das Skript, das die gespeicherte Prozedur in SQL Server aufruft:

1
2
3
4
5
6
7
8
9

DEKLARIEREN SIE @lowerrange INT
SETZEN SIE @lowerrange = 5
DEKLARIEREN SIE @upperrange INT
SETZEN SIE @upperrange = 20
EXEC spShowOddNumbers @lowerrange, @upperrange
DROP PROC spShowOddNumbers

Debugging-Optionen

In SQL Server Management Studio haben Sie eine Vielzahl von Debugging-Optionen.

Debuggen starten

Um das Debuggen einer gespeicherten SQL Server-Prozedur in SQL Server zu starten, drücken Sie ALT + F5 oder gehen Sie zu Debuggen -> Debuggen starten, wie in der folgenden Abbildung gezeigt:

 Starten Sie das Debuggen einer gespeicherten Prozedur in SQL

 Starten Sie das Debuggen einer gespeicherten Prozedur in SQL

Nachdem Sie den Debugger in dem Fenster gestartet haben, in dem Sie Ihre gespeicherte Prozedur in SQL Server aufrufen, wird am Anfang des Abfragefensters ein gelber Cursor angezeigt, wie unten gezeigt:

Starten des Debuggens einer gespeicherten Prozedur in SQL - gelbe Cursorposition

 Starten des Debuggens einer gespeicherten Prozedur in SQL - gelbe Cursorposition

Nachdem Sie mit dem Debuggen begonnen haben, können Sie den Code durchgehen.

Skript durchlaufen

Es gibt drei Möglichkeiten, den Code zu durchlaufen: 1) Schritt über, 2) Schritt hinein und 3) Schritt heraus. Sie können diese Optionen anzeigen, indem Sie auf Debug klicken, wie im folgenden Screenshot gezeigt:

SQL Server-Debugging - Schritt aus

 SQL Server Debugging - Schritt aus
  1. Step Over (F 10)

    Step Over bewegt den Cursor einfach zur nächsten Zeile des ausführbaren Skripts. Wenn sich der Debugger beispielsweise an der folgenden Stelle im Skript befindet:

     SQL Server Debugging - Schritt über - vorher

     SQL Server debugging - Step over - before

    Wenn Sie auf Step Over klicken oder F10 drücken, wird der Cursor einfach in die folgende Zeile verschoben:

    SQL Server-Debugging - Schritt über - nachher

     SQL Server Debugging - Schritt über - nachher
  2. Schritt in (F 11)

    Dies ist eine der wichtigsten und nützlichsten Debugging-Funktionen. Mit Schritt In können Sie das Skript für gespeicherte Prozeduren aus dem Skript aufrufen, das diese gespeicherte Prozedur aufruft.

    Es ist wichtig zu erwähnen, dass Step Into wie Step Over funktioniert. Wenn die ausgeführte Skriptzeile keinen Aufruf der gespeicherten Prozedur in SQL Server enthält.

    Zum Beispiel, wenn Sie in at:

    1
    @upperrange SETZEN = 20

    Der Debugger verschiebt das Steuerelement einfach in die nächste Zeile:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    Die obige Zeile enthält einen Aufruf der gespeicherten Prozedur in SQL Server. Wenn Sie nun in diese Skriptzeile eintreten, führt Sie der Debugger zum Skript der gespeicherten Prozedur ’spShowOddNumbers‘, wie in der folgenden Abbildung gezeigt.

    SQL Server-Debugging - Schritt in

     SQL Server Debugging - Schritt in
  3. Step Out (Shift + F11)

    Step Out ist das Gegenteil von Step Into. Wenn Sie sich in einer gespeicherten Prozedur in SQL Server befinden und zu dem Skript zurückkehren möchten, das die gespeicherte Prozedur aufruft, können Sie Step Out verwenden. Wenn Sie beispielsweise auf Step Over at klicken:

    1
    WÄHREND(@LowerRange &lt; @UpperRange)

    Der Debugger bringt Sie zurück zu dem Skript, das die Funktion aufruft, dh

    SQL Server debugging - Step out

     SQL Server Debugging - Schritt aus

Run To Cursor

Debugging-Optionen führen Sie jeweils eine Zeile aus. Wenn es eine Schleife oder einen langen Code gibt, den Ihr Debugger überspringen soll, können Sie die Option ‚Zum Cursor ausführen‘ verwenden.

1
WÄHREND(@LowerRange < @UpperRange)

Wenn sich der Cursor beispielsweise in der folgenden Zeile der gespeicherten Prozedur in SQL Server befindet und Sie die Schleife überspringen und nach der Schleife zur print-Anweisung wechseln möchten. Sie können einfach die print-Anweisung aufrufen und wie unten gezeigt auf „Zum Cursor ausführen“ klicken:

SQL Server-Debugging - Zum Cursor ausführen

 SQL Server debugging - Run to cursor

Die Schleife wird übersprungen und der Cursor zeigt nun auf die print-Anweisung.

Das lokale Fenster

Das lokale Fenster hilft Ihnen, die Werte der Variablen im Skript zu verfolgen. In diesem Beispiel haben wir zwei Variablen @LowerRange und @UpperRange in unserem Skript. Zu Beginn der while-Schleife in der gespeicherten Prozedur in SQL Server beträgt der Wert der Variablen @LowerRange 5, während die Variable @UpperRange 20 ist, wie in der folgenden Abbildung gezeigt:

 SQL Server Debugging -das lokale Fenster

 SQL Server-Debugging - das lokale Fenster

Sobald Sie die Schleife ausführen und dann den Wert der Variablen überprüfen, sehen Sie, dass die Variablen @LowerRange und @UpperRange beide 20 als Wert anzeigen. Das Fenster Locals zeigt den Namen, den Wert und den Typ der Variablen an. Die Verwendung des Fensters Locals macht es sehr einfach, die Änderungen der Werte Ihrer Variablen im Verlauf des Skripts zu verfolgen.

Wenn Sie das Locals-Fenster versehentlich schließen und es zurückbringen möchten, können Sie einfach zu Debug -> Windows -> Locals gehen, wie unten gezeigt:

 SQL Server Debugging - Schritt für Schritt - lokale Variablen

 SQL Server debugging - Step over - lokale Variablen

Das Überwachungsfenster

Das Überwachungsfenster ist dem lokalen Fenster sehr ähnlich. Der einzige Unterschied besteht darin, dass Sie Variablen zum Beobachtungsfenster hinzufügen oder daraus entfernen können, was nützlich sein kann, wenn Sie mit einer großen Anzahl von Variablen in größeren Skripten arbeiten.

Um dem Beobachtungsfenster eine Variable hinzuzufügen, wählen Sie einfach die Variable aus, klicken Sie mit der rechten Maustaste und wählen Sie dann „Uhr hinzufügen“, wie im folgenden Screenshot gezeigt:

 SQL Server-Debugging in SSMS - Hinzufügen einer Uhr

 SQL Server-Debugging in SSMS - Hinzufügen einer Watch

Um eine Variable zu entfernen, klicken Sie im Watch-Fenster mit der rechten Maustaste auf den Namen der Variablen und klicken Sie in der Liste der Optionen auf „Delete Watch“. Wie unten gezeigt:

SQL Server-Debugging in SSMS - Löschen einer Uhr

 SQL Server-Debugging in SSMS - Löschen einer Uhr

Der Anrufstapel

Der Anrufstapel zeigt, wie der Name schon sagt, den Stapel der Anrufe an, die bis zum aktuellen Punkt ausgeführt wurden.

SQL Server-Debugging in SSMS - der Aufrufstapel

 SQL Server-Debugging in SSMS - der Aufrufstapel

Die erste Zeile des Aufrufstapels in der obigen Abbildung gibt an, dass derzeit die gespeicherte Prozedur spShowOddNumbers ausgeführt wird und sich der Debugger derzeit in Zeile 14 der Datei befindet, die diese gespeicherte Prozedur enthält. Die zweite Zeile zeigt an, dass diese gespeicherte Prozedur aus dem Skript in Zeile 7 von SQLQuery2 aufgerufen wurde.sql-Datei.

Das Sofortfenster

Das Sofortfenster ähnelt dem Konsolenfenster. Sie können beispielsweise mathematische Operationen im unmittelbaren Fenster ausführen, nach den Werten von Variablen suchen usw. Der folgende Screenshot enthält ein Beispiel für ein Sofortfenster.

SQL Server-Debugging im SSMS - Sofortfenster

 SQL Server-Debugging in SSMS - sofortiges Fenster

Hinweis: Der Befehl cls löscht das sofortige Fenster!

Haltepunkte

Ein Haltepunkt ist eines der am häufigsten verwendeten Debugging-Tools in jeder Programmiersprache. Mit Haltepunkt können Sie den Speicherort angeben, an dem der Debugger die Ausführung des Codes beenden soll. Sie sind besonders nützlich, wenn Sie nicht alle Codezeilen debuggen möchten, sondern den Status von Variablen an bestimmten Stellen in Ihrem Code überprüfen möchten.

Um einen Haltepunkt in Ihren Code einzufügen, klicken Sie einfach mit der rechten Maustaste auf den grauen Bereich links neben der Zeile des Skripts, in den Sie Ihren Haltepunkt einfügen möchten. Alternativ wird durch Drücken von F9 automatisch ein Haltepunkt zur Zeile hinzugefügt. Durch erneutes Drücken der Taste F9 wird der Haltepunkt entfernt.

SQL Server-Debugging in SSMS - Haltepunkte

 SQL Server-Debugging in SSMS - Haltepunkte

Sie können in der obigen Abbildung sehen, dass der Zeile, die die gespeicherte Prozedur „spShowOddNumbers“ in SQL Server ausführt, ein Haltepunkt hinzugefügt wurde. Debuggen Sie nun dieses Skript. Sie werden sehen, dass der Debugger in der ersten Zeile des Skripts startet.

SQL Server-Debugging in SSMS - der Debugger beginnt in der ersten Zeile des Skripts

 SQL Server-Debugging in SSMS - der Debugger beginnt in der ersten Zeile des Skripts

Drücken Sie nun ALT + F5 oder gehen Sie erneut zum Debug-Menü und klicken Sie auf Debug -> Weiter. Sie werden sehen, dass der Debugger, anstatt die nächste Zeile zu debuggen, direkt zur nächsten Zeile mit dem Haltepunkt springt.

SQL Server-Debugging in SSMS - Hinzufügen einer Uhr - Drücken Sie ALT + F5

 SQL Server-Debugging in SSMS - Hinzufügen einer Uhr - Drücken Sie ALT + F5

Sie können auch bedingte Haltepunkte erstellen. Bedingte Haltepunkte werden nur getroffen, wenn die angegebenen Bedingungen erfüllt sind.

Um eine Bedingung für den Haltepunkt anzugeben, klicken Sie einfach mit der rechten Maustaste auf den Haltepunkt und wählen Sie „Bedingungen“, wie in der folgenden Abbildung gezeigt:

Debuggen einer gespeicherten SQL Server-Prozedur in SSMS - Bedingungen

 Debuggen einer gespeicherten SQL Server-Prozedur in SSMS - Conditions

Ein neues Fenster wird geöffnet, in dem Sie die Bedingungen angeben können, die erfüllt sein müssen, bevor ein Haltepunkt erreicht werden kann. Wenn Sie möchten, dass dieser Haltepunkt nur erreicht wird, wenn @LowerRange größer als 15 ist, können Sie dies als Bedingung hinzufügen, wie in der Abbildung unten gezeigt:

Debuggen einer gespeicherten SQL Server-Prozedur in SSMS - Festlegen von Variablen für eine Bedingung

Fazit

In diesem Artikel wurde erläutert, welche verschiedenen Optionen Microsoft SQL Server Management Studio zum Debuggen eines Skripts oder einer gespeicherten Prozedur in SQL Server bereitstellt.

Weitere großartige Artikel von Ben

Verwendung integrierter SQL Server-Funktionen und Erstellen benutzerdefinierter Skalarfunktionen

Verwendung von Fensterfunktionen

Debuggen gespeicherter Prozeduren in SQL Server Management Studio (SSMS)

  • Autor
  • Neueste Beiträge
 Ben Richardson
Ben Richardson leitet Acuity Training, einen führenden Anbieter von SQL-Schulungen in Großbritannien. Es bietet eine vollständige Palette von SQL-Schulungen, von Einführungskursen bis hin zu erweiterten Administrations– und Data Warehouse-Schulungen – weitere Informationen finden Sie hier. Acuity hat Büros in London und Guildford, Surrey. Er bloggt auch gelegentlich auf Acuity’s Blog
Alle Beiträge von Ben Richardson anzeigen

 Ben Richardson
Neueste Beiträge von Ben Richardson (alle anzeigen)
  • Arbeiten mit Power BI-Berichtsthemen – 25. Februar 2021
  • Power BI: Wasserfalldiagramme und kombinierte Grafiken – 19. Januar 2021
  • Power BI: Bedingte Formatierung und Datenfarben in Aktion – Januar 14, 2021