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:

Start feilsøking av en lagret prosedyre I SQL

Start feilsøking av en lagret prosedyre i SQL

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:

 begynner å feilsøke en lagret prosedyre I SQL-gul markørposisjon

Begynner å feilsøke en lagret prosedyre i SQL - gul markørposisjon

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:

 SQL Server-feilsøking-Gå ut

SQL Server feilsøking-Gå ut
  1. 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:

    SQL Server feilsøking-Trinn over-før

    SQL Server debugging-Step over-før

    Klikke Step Over eller trykke F10 bare flytter markøren til følgende linje:

    SQL Server feilsøking - Trinn over - etter

    SQL Server debugging-Trinn over-etter
  2. 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å:

    1
    SETT @upperrange = 20

    debugger vil bare flytte kontrollen til neste linje:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    linjen 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.

     SQL Server feilsøking-Trinn inn

    SQL Server debugging-Trinn inn
  3. 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å:

    1
    MENS (@LowerRange &lt; @UpperRange)

    debugger vil ta deg tilbake til skriptet som kaller funksjonen dvs.

    SQL Server debugging-Trinn ut

    SQL Server feilsøking-Gå ut

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:

 SQL Server-feilsøking-Kjør til markør

SQL Server debugging-Kjør til markør

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:

SQL Server debugging-det lokale vinduet

SQL Server debugging-det lokale vinduet

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:

SQL Server debugging-Trinn over-lokale variabler

SQL Server debugging-Trinn over-lokale variabler

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:

SQL Server feilsøking I SSMS-legge til en klokke

SQL Server debugging I SSMS-legge til en klokke

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:

 SQL Server-feilsøking I SSMS-slette en klokke

SQL Server debugging I SSMS-slette en klokke

Anropsstakken

Anropsstakken, som navnet antyder, viser stabelen med samtaler som er utført opp til gjeldende punkt.

 SQL Server-feilsøking I SSMS-kallstakken

SQL Server debugging I SSMS-anropsstakken

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.

 SQL Server feilsøking I ssms-umiddelbar vindu

SQL Server debugging I SSMS-umiddelbar 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.

 SQL Server feilsøking I ssms-Break poeng

SQL Server debugging I SSMS-Break poeng

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.

 SQL Server-feilsøking I SSMS-feilsøkeren som starter i den første linjen i skriptet

SQL Server debugging I SSMS-debuggeren starter i 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.

 SQL Server feilsøking I SSMS-legge til en klokke-Trykk ALT + F5

SQL Server debugging I SSMS-legge til en klokke-Trykk ALT + F5

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:

 Feilsøke en SQL Server-lagret prosedyre I SSMS-Betingelser

Feilsøking AV EN SQL Server-lagret prosedyre I SSMS - Betingelser

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:

Feilsøking AV en LAGRET SQL Server-prosedyre I ssms-Innstillingsvariabler for en betingelse

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
Ben Richardson
Ben Richardson driver Acuity Training en ledende LEVERANDØR AV SQL-opplæring I STORBRITANNIA. DET tilbyr ET komplett UTVALG AV SQL-opplæring fra introduksjonskurs til avansert administrasjon og datalageropplæring – se her for mer informasjon. Acuity har kontorer I London Og Guildford, Surrey. Han blogger også av Og til På Acuity blogg
Se Alle innlegg Av Ben Richardson

Ben Richardson
Siste innlegg Av Ben Richardson (se alle)
  • 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