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:
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:
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:
- 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:
Wenn Sie auf Step Over klicken oder F10 drücken, wird der Cursor einfach in die folgende Zeile verschoben:
- 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 = 20Der Debugger verschiebt das Steuerelement einfach in die nächste Zeile:
1EXEC spShowOddNumbers @lowerrange, @upperrangeDie 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.
- 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:
1WÄHREND(@LowerRange < @UpperRange)Der Debugger bringt Sie zurück zu dem Skript, das die Funktion aufruft, dh
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:
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:
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:
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:
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:
Der Anrufstapel
Der Anrufstapel zeigt, wie der Name schon sagt, den Stapel der Anrufe an, die bis zum aktuellen Punkt ausgeführt wurden.
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.
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.
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.
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.
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:
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:
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
Alle Beiträge von Ben Richardson 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