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:
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:
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:
- 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:
klik op stap over of druk op F10 verplaatst de cursor eenvoudig naar de volgende regel:
- 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:
1SET @upperrange = 20De debugger zal gewoon het besturingselement verplaatsen naar de volgende regel:
1EXEC spShowOddNumbers @lowerrange, @upperrangeDe 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.
- 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:
1TERWIJL(@LowerRange < @UpperRange)De debugger zal u terug naar het script dat roept de functie d.w.z.
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:
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:
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:
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:
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:
de Call Stack
de Call Stack toont, zoals de naam al doet vermoeden, de stapel van oproepen die tot het huidige punt zijn uitgevoerd.
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.
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.
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.
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.
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:
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:
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
bekijk alle berichten van Ben Richardson
- 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