SQLShack

debuggen is een van de belangrijkste maar pijnlijke onderdelen van elk softwareproces. Om een aantal fouten te vinden moet je de code stap voor stap uitvoeren om te zien welke sectie van de code verantwoordelijk is voor de fout. Dit wordt runtime debugging genoemd.

Gelukkig wordt SQL Server Management Studio (SSMS) geleverd met geautomatiseerde debugging mogelijkheden om ontwikkelaars te helpen hun scripts te debuggen. In dit artikel zullen we praktisch uitleggen hoe SSM ‘ s kunnen worden gebruikt om opgeslagen procedures in SQL Server te debuggen door middel van een zeer eenvoudig voorbeeld.

voorbeeld

voor ons voorbeeld gebruiken we een opgeslagen procedure “spShowOddNumbers” die twee getallen als parameters neemt en alle oneven getallen tussen deze twee gespecificeerde getallen afdrukt.

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

CREATE PROCEDURE spShowOddNumbers
@LowerRange INT,
@UpperRange INT
ALS
BEGIN
WHILE(@LowerRange < @UpperRange)
BEGIN
if(@LowerRange%2 != 0)
BEGIN
PRINT @LowerRange
EINDE
INSTELLEN @LowerRange = @LowerRange + 1
EINDE
PRINT AFGEDRUKT ONEVEN GETALLEN TUSSEN ‘+ RTRIM(@lowerRange) + ‘ en ‘ + RTRIM(@UpperRange)
EINDE

Het script dat roept de opgeslagen procedure in SQL Server:

1
2
3
4
5
6
7
8
9

DECLARE @lowerrange INT
INSTELLEN @lowerrange = 5
VERKLAREN @upperrange INT
INSTELLEN @upperrange = 20
EXEC spShowOddNumbers @lowerrange, @upperrange
DROP PROC spShowOddNumbers

debug-opties

In SQL Server Management Studio heb je een verscheidenheid van opties voor foutopsporing.

Start Debugging

om Te beginnen met het debuggen van een SQL server opgeslagen procedure in SQL-Server, drukt u op ALT + F5 of ga naar de Debug -> Start Debugging, zoals weergegeven in de figuur hieronder:

Start het debuggen van een opgeslagen procedure in SQL

Start het debuggen van een opgeslagen procedure in SQL -

Na het starten van de debugger in het venster waar u belt uw opgeslagen procedure in SQL-Server, ziet u dat er een gele cursor aan het begin van het query-venster, zoals hieronder weergegeven:

starten met debuggen van een opgeslagen procedure in SQL-gele cursorpositie

beginnen met debuggen van een opgeslagen procedure in SQL-gele cursorpositie

Nu u bent begonnen met debuggen kunt u door de code stappen.

stepping Through Script

er zijn drie opties om door de code te stappen: 1) Step Over, 2) Step Into and 3) Step Out. U kunt deze opties zien door te klikken op Debug zoals getoond in de screenshot hieronder:

SQL Server debugging-stap uit

SQL Server debugging-stap uit
  1. stap Over (F 10)

    stap over verplaatst eenvoudig de cursor naar de volgende regel van het uitvoerbare script. Bijvoorbeeld, als de debugger zich op de volgende locatie in het script bevindt:

    SQL Server debugging-stap over-voor

    SQL Server debugging-Step over-before

    klik op stap over of druk op F10 verplaatst de cursor eenvoudig naar de volgende regel:

    SQL Server debugging-stap over-na

    SQL Server debugging-stap over-na
  2. stap in (F 11)

    dit is een van de belangrijkste en handigste debugfuncties. Stap in kunt u breken in de opgeslagen procedure script van het script dat roept die opgeslagen procedure.

    het is belangrijk om te vermelden dat stap in werken zoals stap Over. Als de script regel die wordt uitgevoerd geen aanroep bevat naar de opgeslagen procedure in SQL Server.

    bijvoorbeeld als u stap in at:

    1
    SET @upperrange = 20

    De debugger zal gewoon het besturingselement verplaatsen naar de volgende regel:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    De bovenstaande regel bevat een oproep aan de opgeslagen procedure in SQL Server. Nu als je stap in op deze regel van script, de debugger zal u naar het script van ‘spShowOddNumbers’ opgeslagen procedure zoals weergegeven in de volgende figuur.

    SQL Server debugging-stap in

    SQL Server debugging-stap in
  3. stap eruit (Shift + F11)

    stap eruit is het tegenovergestelde van stap erin. Als u zich binnen een opgeslagen procedure in SQL Server en u wilt terug te gaan naar het script dat de opgeslagen procedure aanroepen kunt u Step Out gebruiken. Bijvoorbeeld, als u klikt op stap over op:

    1
    TERWIJL(@LowerRange &lt; @UpperRange)

    De debugger zal u terug naar het script dat roept de functie d.w.z.

    SQL Server debugging - Stap uit

    SQL Server debugging - Stap uit

Uitvoeren van de Cursor

debug-opties uitvoeren van een lijn op een tijd. Als er een lus of een lang stuk code is dat je debugger moet overslaan, kun je de optie ‘Run To Cursor’ gebruiken.

1
terwijl (@LowerRange < @UpperRange)

bijvoorbeeld, als de cursor zich op de volgende regel van de opgeslagen procedure in SQL Server bevindt en u de lus wilt overslaan en naar het print statement na de lus wilt gaan. U kunt gewoon gaan de print statement en klik op “Run To Cursor” zoals hieronder getoond:

SQL Server debugging-uitvoeren naar cursor

SQL Server debugging-Run to cursor

de lus zal worden overgeslagen en uw cursor zal nu wijzen op het print statement.

het lokale venster

het lokale venster helpt u bij het bijhouden van de waarden van de variabelen in het script. In dit voorbeeld hebben we twee variabelen @LowerRange en @UpperRange in ons script. Aan het begin van de while lus in de opgeslagen procedure in SQL Server is de waarde van @LowerRange variabele 5 terwijl de @UpperRange variabele 20 is zoals weergegeven in de onderstaande figuur:

foutopsporing van SQL Server - het lokale venster

SQL Server debugging-het lokale venster

zodra u de lus uitvoert en vervolgens de waarde van de variabelen controleert, zult u zien dat de variabelen @LowerRange en @UpperRange beide 20 als hun waarde zullen tonen. Het venster Locals toont de naam, waarde en het type van de variabele. Het gebruik van het Locals venster maakt het heel eenvoudig om de veranderingen in de waarden van je variabelen bij te houden terwijl je door het script heen gaat.

als u het Locals-venster per ongeluk sluit en u het terug wilt brengen, kunt u gewoon naar Debug -> Windows -> Locals gaan, zoals hieronder getoond:

SQL Server debugging-stap over-lokale variabelen

SQL Server debugging-stap over-lokale variabelen

het kijkvenster

het kijkvenster lijkt erg op het Locals-venster. Het enige verschil is dat je variabelen kunt toevoegen of verwijderen uit het kijkvenster, wat handig kan zijn bij het werken met grote aantallen variabelen in grotere scripts.

om een variabele aan het kijkvenster toe te voegen, selecteert u de variabele, klikt u met de rechtermuisknop en selecteert u “Watch toevoegen” zoals getoond in de volgende schermafbeelding:

SQL Server-foutopsporing in SSMS-een watch toevoegen

SQL Server debugging in SSMS-een watch

toevoegen om een variabele te verwijderen, klikt u met de rechtermuisknop op de naam van de variabele in het venster Watch en klikt u op “delete Watch” in de lijst met opties. Zoals hieronder getoond:

SQL Server-foutopsporing in SSMS-een watch verwijderen

SQL Server debugging in SSMS-verwijderen van een watch

de Call Stack

de Call Stack toont, zoals de naam al doet vermoeden, de stapel van oproepen die tot het huidige punt zijn uitgevoerd.

SQL Server debugging in SSMS - de call stack

SQL Server debugging in SSMS - de call stack

de eerste regel van de Call Stack in de figuur hierboven, vertelt ons dat momenteel de spshowoddnumbers opgeslagen procedure wordt uitgevoerd en op het moment dat de debugger op regel 14 van het bestand staat dat deze opgeslagen procedure bevat. De tweede regel geeft aan dat deze opgeslagen procedure werd aangeroepen vanuit het script op Regel 7 van de SQLQuery2.SQL-bestand.

het directe venster

het directe venster lijkt op het consolevenster. U kunt bijvoorbeeld wiskundige bewerkingen uitvoeren in het directe venster, Controleren op de waarden van variabelen, enz. De volgende schermafbeelding bevat een voorbeeld van een onmiddellijk venster.

SQL Server debuggen in SSMS-direct venster

SQL Server debugging in SSMS-direct venster

opmerking: cls opdracht wist het direct venster!

breekpunten

een breekpunt is een van de meest gebruikte debugprogramma ‘ s in elke programmeertaal. Breekpunt kunt u de locatie opgeven waar u wilt dat uw debugger stopt met het uitvoeren van de code. Ze komen vooral van pas als je niet alle regels code wilt debuggen, in plaats van de status van variabelen op specifieke locaties in je code te controleren.

om een breekpunt in uw code te plaatsen, klikt u met de rechtermuisknop op het grijze gebied aan de linkerkant van de regel van het script waar u uw breekpunt wilt plaatsen. Als u ook op F9 drukt, wordt automatisch een breekpunt aan de regel toegevoegd. Als u nogmaals op de F9-toets drukt, wordt het breekpunt verwijderd.

SQL Server-foutopsporing in SSMS-breekpunten

SQL Server debugging in SSMS-Break points

u kunt in de afbeelding hierboven zien dat een breekpunt is toegevoegd aan de regel die de “spShowOddNumbers” opgeslagen procedure in SQL Server uitvoert. Nu, debug dit script. U zult zien dat de debugger zal starten op de eerste regel van het script.

SQL Server debugging in SSMS - de debugger die begint in de eerste regel van het script

SQL Server debugging in SSMS - de debugger die begint in de eerste regel van het script

druk nu op ALT + F5 of ga opnieuw naar het debug menu en klik op Debug – > Doorgaan. U zult zien dat in plaats van het debuggen van de volgende regel, de debugger zal direct springen Naar de dichtstbijzijnde regel met het breekpunt.

SQL Server debugging in SSMS-een watch toevoegen - druk op ALT + F5

SQL Server debugging in SSMS-een watch toevoegen-Druk op ALT + F5

u kunt ook voorwaardelijke breekpunten maken. Voorwaardelijke breekpunten worden alleen geraakt als aan bepaalde voorwaarden is voldaan.

om een voorwaarde op het breekpunt te specificeren, klikt u met de rechtermuisknop op het breekpunt en selecteert u “Voorwaarden” zoals getoond in de onderstaande afbeelding:

debuggen van een SQL Server opgeslagen procedure in SSMS-Voorwaarden

foutopsporing een SQL Server opgeslagen procedure in SSMS - Voorwaarden

er zal een nieuw venster worden geopend waarin u de voorwaarden kunt opgeven waaraan moet worden voldaan voordat een breekpunt kan raken. Als u wilt dat dit breekpunt alleen wordt geraakt als @LowerRange groter is dan 15, kunt u dit toevoegen als voorwaarde, zoals weergegeven in de afbeelding hieronder:

debuggen van een SQL Server opgeslagen procedure in SSMS - instellingsvariabelen voor een voorwaarde

conclusie

in dit artikel hebben we besproken welke verschillende opties Microsoft SQL Server Management Studio biedt voor het debuggen van een script of opgeslagen procedure in SQL Server.

andere grote artikelen uit Ben

ingebouwde functies van SQL Server gebruiken en door de gebruiker gedefinieerde scalaire functies aanmaken

Vensterfuncties gebruiken

foutopsporing opgeslagen procedures in SQL Server Management Studio (SSMS))

  • auteur
  • recente berichten
Ben Richardson
Ben Richardson runt Acuity Training een toonaangevende aanbieder van SQL-training in het Verenigd Koninkrijk. Het biedt een volledig scala aan SQL-trainingen van inleidende cursussen tot geavanceerde administratie en data warehouse-training-zie hier voor meer informatie. Acuity heeft kantoren in Londen en Guildford, Surrey. Hij blogt ook af en toe op Acuity ‘ s blog
bekijk alle berichten van Ben Richardson

Ben Richardson
Laatste berichten van Ben Richardson (alles bekijken ))
  • Working with Power BI report themes-February 25, 2021
  • Power BI: Watervalkaarten en gecombineerde Visuals-January 19, 2021
  • Power BI: Voorwaardelijke opmaak en datakleuren in actie-januari 14, 2021