SQLShack
Feilsøking er en av de viktigste, men smertefulle delene av enhver programvareprosess. For å finne noen feil må du kjøre koden trinnvis for å se hvilken del av koden som er ansvarlig for feilen. Dette kalles runtime debugging.
HELDIGVIS KOMMER SQL Server Management Studio (SSMS) med automatiserte feilsøkingsfunksjoner for å hjelpe utviklere med å feilsøke skriptene sine. I denne artikkelen vil vi forklare praktisk talt hvordan SSMS kan brukes til å feilsøke lagrede prosedyrer I SQL Server ved å arbeide gjennom et veldig enkelt eksempel.
Eksempel
for vårt eksempel vil vi bruke en lagret prosedyre «spShowOddNumbers» som tar to tall som parametere og skriver ut alle odde tall mellom de to angitte tallene.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
OPPRETT PROSEDYRE spShowOddNumbers
@LowerRange INT,
@UpperRange INT
SOM
BEGYNN
MENS(@LowerRange < @UpperRange)
BEGYNN
hvis(@lowerrange%2 != 0)
BEGYNN
SKRIV ut @LowerRange
SLUTT
SETT @LowerRange = @LowerRange + 1
SLUTT
SKRIV UT ‘TRYKTE ODDE TALL MELLOM’ + RTRIM(@lowerRange) + ‘ og ‘ + RTRIM(@UpperRange)
slutt
|
skriptet som kaller den lagrede prosedyren I SQL Server:
1
2
3
4
5
6
7
8
9
|
DECLARE @lowerrange INT
SET @lowerrange = 5
DECLARE @upperrange INT
SET @upperrange = 20
EXEC spShowOddNumbers @lowerrange, @ upperrange
DROP PROC spShowOddNumbers
|
Feilsøkingsalternativer
I SQL Server Management Studio har du en rekke feilsøkingsalternativer.
Start Feilsøking
for å starte feilsøking av en LAGRET SQL server-prosedyre I SQL Server, trykk ALT + F5, eller gå Til Feilsøking – > Start Feilsøking, som vist i figuren nedenfor:
etter å ha startet debuggeren I vinduet der du ringer din lagrede prosedyre I SQL Server, vil du se at det vil være en gul markør ved starten av spørringsvinduet som vist nedenfor:
Nå har du startet feilsøking, du kan gå gjennom koden.
Stepping Gjennom Script
det er tre alternativer for å gå gjennom koden: 1) Gå Over, 2) Gå Inn og 3) Gå Ut. Du kan se disse alternativene ved å klikke Debug som vist på skjermbildet nedenfor:
- Step Over (F 10)
Step over flytter bare markøren til neste linje med kjørbart skript. For eksempel, hvis debugger er på følgende sted i skriptet:
Klikke Step Over eller trykke F10 bare flytter markøren til følgende linje:
- Trinn Inn (F 11)
Dette er en av de viktigste og nyttige feilsøkingsfunksjonene. Trinn Inn lar deg bryte inn i lagret prosedyre skript fra skriptet som kaller den lagrede prosedyren.
Det er viktig å nevne At Trinn Inn fungerer Som Trinn Over. Hvis skriptlinjen som kjøres, ikke inneholder noe kall til den lagrede prosedyren I SQL Server.
For eksempel Hvis du Går inn på:
1SETT @upperrange = 20debugger vil bare flytte kontrollen til neste linje:
1EXEC spShowOddNumbers @lowerrange, @upperrangelinjen ovenfor inneholder et kall til den lagrede prosedyren I SQL Server. Nå Hvis du Går Inn på denne linjen av skriptet, vil debugger ta deg til skriptet av ‘spShowOddNumbers’ lagret prosedyre som vist i figuren nedenfor.
- Trinn Ut (Shift + F11)
Trinn ut er motsatt Av Trinn Inn. Hvis du er inne i en lagret prosedyre I SQL Server, og du vil gå tilbake til skriptet som kaller den lagrede prosedyren, kan Du bruke Step Out. For eksempel, hvis du klikker Trinn over på:
1MENS (@LowerRange < @UpperRange)debugger vil ta deg tilbake til skriptet som kaller funksjonen dvs.
Kjør Til Markør
Feilsøkingsalternativer utfør en linje om gangen. Hvis det er en sløyfe eller et langt stykke kode som du vil at debuggeren skal hoppe over, kan du bruke Alternativet Kjør Til Markør.
1
|
MENS (@LowerRange < @UpperRange)
|
for eksempel, hvis markøren er på følgende linje i den lagrede prosedyren I SQL Server, og du vil hoppe over sløyfen og gå til print-setningen etter sløyfen. Du kan bare gå ut setningen og klikk «Kjør Til Markøren» som vist nedenfor:
sløyfen vil bli hoppet over og markøren vil nå peke på print-setningen.
Det Lokale Vinduet
det lokale vinduet hjelper deg med å holde oversikt over verdiene til variablene i skriptet. I dette eksemplet har vi to variabler @LowerRange og @UpperRange i skriptet vårt. Ved starten av mens-løkken i den lagrede prosedyren I SQL Server er verdien av @ LowerRange-variabelen 5 mens @ UpperRange-variabelen er 20 som vist i figuren nedenfor:
Når du kjører sløyfen og deretter sjekker verdien av variablene, vil du se at @LowerRange og @ upperrange-variablene begge viser 20 som verdi. Lokalbefolkningsvinduet viser navnet, Verdien og typen av variabelen. Ved Hjelp Av Locals vinduet gjør det svært enkelt å kan holde styr på endringer i verdiene av variablene som du avanserer gjennom skriptet.
hvis Du lukker Lokalbefolkningsvinduet ved et uhell, og du vil ta det tilbake, kan du bare Gå Til Debug – > Windows – > Lokalbefolkning som vist nedenfor:
Overvåkingsvinduet
Overvåkingsvinduet ligner Veldig På Lokalbefolkningsvinduet. Den eneste forskjellen er at du kan legge til eller fjerne variabler fra Klokkevinduet, noe som kan være nyttig når du arbeider med et stort antall variabler i større skript.
for å legge til en variabel I Klokkevinduet, velg bare variabelen, høyreklikk og velg deretter «Legg Til Klokke» som vist på følgende skjermbilde:
på Samme måte, for å fjerne en variabel, høyreklikk navnet på variabelen i Overvåkingsvinduet og klikk «Slett Klokke» fra listen over alternativer. Som vist nedenfor:
Anropsstakken
Anropsstakken, som navnet antyder, viser stabelen med samtaler som er utført opp til gjeldende punkt.
den første linjen I Anropsstakken i figuren ovenfor, forteller oss at spShowOddNumbers lagret prosedyren utføres og i øyeblikket debugger er på linje 14 i filen som inneholder denne lagrede prosedyren. Den andre linjen indikerer at denne lagrede prosedyren ble kalt fra skriptet på Linje 7 I SQLQuery2.sql-fil.
Det Umiddelbare Vinduet
Det Umiddelbare vinduet ligner på konsollvinduet. For eksempel kan du utføre matematiske operasjoner I Det Umiddelbare vinduet, se etter verdiene av variabler, etc. Følgende skjermbilde inneholder et eksempel på et øyeblikkelig vindu.
Merk: cls kommandoen fjerner umiddelbar vinduet!
Stoppunkter
et stoppunkt er et av de mest brukte feilsøkingsverktøyene i et hvilket som helst programmeringsspråk. Stoppunkt lar deg angi plasseringen der du vil at debuggeren skal slutte å utføre koden. De kommer spesielt til nytte når du ikke vil feilsøke alle kodelinjer, men du vil sjekke statusen til variabler på bestemte steder i koden din.
for å sette et stoppunkt i koden din, høyreklikk bare på det grå området til venstre på linjen i skriptet der du vil sette stoppunktet ditt. Alternativt vil trykke F9 automatisk legge til et stoppunkt på linjen. Hvis Du trykker På F9-tasten igjen, fjernes stoppunktet.
du kan se i figuren ovenfor, at et stoppunkt er lagt til linjen som utfører» spShowOddNumbers » lagret prosedyre I SQL Server. Nå, feilsøke dette skriptet. Du vil se at debuggeren starter på første linje av skriptet.
trykk NÅ ALT + F5 eller gå til debug-menyen igjen og klikk Debug – > Fortsett. Du vil se at i stedet for å feilsøke neste linje, vil debuggeren hoppe rett til nærmeste linje med brytepunktet.
du kan også opprette betingede avbruddspunkter. Betingede avbruddspunkter treffes bare når angitte betingelser er oppfylt.
for å angi en betingelse på stoppunktet, høyreklikk bare stoppunktet og velg «Betingelser» som vist på figuren nedenfor:
et nytt vindu åpnes Der du kan angi betingelsene som skal oppfylles før et stoppunkt kan treffe. Hvis du vil at dette brytepunktet bare skal treffes når @LowerRange er større enn 15, kan du legge til dette som betingelse, som vist på bildet nedenfor:
Konklusjon
I denne artikkelen diskuterte Vi hvilke forskjellige alternativer microsoft SQL Server Management Studio gir for feilsøking av et skript eller lagret prosedyre I SQL Server.
Andre flotte artikler Fra Ben
slik bruker DU SQL Server innebygde funksjoner og oppretter brukerdefinerte skalarfunksjoner
Slik Bruker Du Vindusfunksjoner
Feilsøking av lagrede prosedyrer i SQL Server Management Studio (SSMS)
- Forfatter
- Siste Innlegg
Se Alle innlegg Av Ben Richardson
- Arbeide Med Power BI-rapporttemaer-25. februar 2021
- Power BI: Fossekart og Kombinert Grafikk-19. januar 2021
- Power BI: Betinget formatering og data farger i aksjon-januar 14, 2021