Fejlsøgning af lagrede procedurer i Server Management Studio (SSMS)

Debugging er en af de vigtigste, men smertefulde dele af enhver programmel proces. For at finde nogle fejl skal du køre koden trin for trin for at se, hvilket afsnit af koden der er ansvarlig for fejlen. Dette kaldes runtime debugging.

heldigvis leveres Server Management Studio (SSMS) med automatiserede fejlfindingsfunktioner til at hjælpe udviklere med at debugge deres scripts. I denne artikel vil vi forklare praktisk, hvordan SSMS kan bruges til at fejlsøge lagrede procedurer i server ved at arbejde gennem et meget simpelt eksempel.

eksempel

for vores eksempel bruger vi en gemt procedure “spshaddnumbers”, der tager to tal som parametre og udskriver alle de ulige tal mellem disse to specificerede tal.

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

Opret PROCEDURE spshoveddtal
@Laverrange INT,
@UpperRange INT
AS
begynd
mens(@Laverrange < @UpperRange)
begynd
hvis(@lavere rækkevidde%2 != 0)
BEGIN
PRINT @Laverrange
END
SET @Laverrange = @Laverrange + 1
end
PRINT ‘udskrevne ulige tal mellem’ + RTRIM(@laverrange) + ‘ og ‘ + Rtrim(@UpperRange)
ende

scriptet, der kalder den lagrede procedure i:

1
2
3
4
5
6
7
8
9

DECLARE @upperrange INT
SET @laverrange = 5
DECLARE @upperrange INT
SET @upperrange = 20
eksekver spvisoddnumbers @laverrange, @upperrange
DROP PROC

Debugging muligheder

i Server Management Studio har du en række debugging muligheder.

start Debugging

tryk på ALT + F5 for at starte debugging af en server, der er gemt i serveren, eller gå til Debug -> Start Debugging, som vist i nedenstående figur:

start debugging af en gemt procedure

når du har startet debuggeren i det vindue, hvor du ringer til din gemte procedure i server, vil du se, at der vil være en gul markør i starten af forespørgselsvinduet som vist nedenfor:

begynder at debugge en gemt procedure i gul markørposition

begynder at debugge en gemt procedure i gul markørposition

nu er du begyndt at debugge, kan du gå gennem koden.

Stepping through Script

der er tre muligheder for at træde gennem koden: 1) Step Over, 2) Step ind og 3) Step out. Du kan se disse muligheder ved at klikke på Debug som vist på skærmbilledet nedenfor:

 trin ud

fejlsøgning af Server-Step out
  1. trin Over (F 10)

    trin over flytter blot markøren til den næste linje med eksekverbart script. For eksempel, hvis debuggeren er på følgende sted i scriptet:

    fejlsøgning af Server-Step over-before

    trin over-Før

    Klik på trin Over eller tryk på F10 flytter blot markøren til følgende linje:

     trin over - efter

    fejlsøgning af Server-Step over-after
  2. Træd ind i (F 11)

    dette er en af de vigtigste og mest nyttige debugging funktioner. Step Into lader dig bryde ind i den lagrede procedure script fra scriptet, der kalder den lagrede procedure.

    det er vigtigt at nævne det trin i værker som trin Over. Hvis scriptlinjen, der udføres, ikke indeholder et opkald til den lagrede procedure i serveren.

    for eksempel hvis du træder ind på:

    1
    SET @upperrange = 20

    debuggeren flytter simpelthen kontrollen til næste linje:

    1

    ovenstående linje indeholder et opkald til den lagrede procedure i . Nu, hvis du træder ind på denne linje af script, debugger vil tage dig til scriptet af ‘spshaddnumbers’ gemt procedure som vist i den følgende figur.

     Server debugging - Træd ind

    server debugging-Træd ind
  3. Step Out (Shift + F11)

    Step out er det modsatte af Step Into. Hvis du er inde i en gemt procedure, og du vil gå tilbage til scriptet, der kalder den gemte procedure, kan du bruge Step out. For eksempel, hvis du klikker trin over på:

    1
    mens (@Laverrange & lt; @UpperRange)

    debuggeren fører dig tilbage til scriptet, der kalder funktionen, dvs.

    fejlsøgning af Server-Step out

Kør til Cursor

Fejlfindingsindstillinger udfør en linje ad gangen. Hvis der er en løkke eller et langt stykke kode, som du vil have din debugger til at springe over, kan du bruge indstillingen ‘Kør til markør’.

1
mens (@lavere rækkevidde < @UpperRange)

hvis markøren f.eks. er på følgende linje i den lagrede procedure, og du vil springe over sløjfen og gå til udskriftserklæringen efter sløjfen. Du kan blot gå udskriftsopgørelsen og klikke på “Kør til markør” som vist nedenfor:

 server debugging-Kør til cursor

run to cursor

sløjfen vil blive sprunget over, og din markør vil nu pege på udskriftsopgørelsen.

det lokale vindue

det lokale vindue hjælper dig med at holde styr på værdierne for variablerne i scriptet. I dette eksempel har vi to variabler @Upperrange og @UpperRange i vores script. Værdien af variablen @Upperrange er 5, mens variablen @UpperRange er 20 som vist i nedenstående figur:

server debugging - det lokale vindue

det lokale vindue

når du har udført sløjfen og derefter kontrollerer værdien af variablerne, vil du se, at variablerne @Laverrange og @UpperRange begge viser 20 som deres værdi. Vinduet Locals viser Navn, Værdi og type på variablen. Ved hjælp af vinduet Locals gør det meget nemt at kan holde styr på ændringerne i værdierne af dine variabler, som du fremskridt gennem scriptet.

hvis du lukker det lokale vindue ved et uheld, og du vil bringe det tilbage, kan du blot gå til Debug -> vinduer -> lokale som vist nedenfor:

fejlsøgning af servere - Step over - lokale variabler

trin over - lokale variabler

uret vindue

uret vinduet er meget lig den lokale vindue. Den eneste forskel er, at du kan føje til eller fjerne variabler fra Urvinduet, hvilket kan være nyttigt, når du arbejder med et stort antal variabler i større scripts.

for at tilføje en variabel til Urvinduet skal du blot vælge variablen, højreklikke og derefter vælge “Tilføj ur” som vist i det følgende skærmbillede:

fejlsøgning af Server i SSMS-tilføjelse af et ur

SSMS-tilføjelse af et ur

tilsvarende for at fjerne en variabel skal du højreklikke på navnet på variablen i Urvinduet og klikke på “Slet ur” fra listen over indstillinger. Som vist nedenfor:

 server debugging i SSMS-sletning af et ur

sletning af et ur

Opkaldsstakken

Opkaldsstakken viser, som navnet antyder, stakken af opkald, der er udført op til det aktuelle punkt.

 server debugging i SSMS-opkaldsstakken

SSMS-opkaldsstakken

den første linje i Opkaldsstakken i figuren ovenfor fortæller os, at i øjeblikket udføres den lagrede procedure, og i øjeblikket er debuggeren på linje 14 i filen, der indeholder denne lagrede procedure. Den anden linje angiver, at denne lagrede procedure blev kaldt fra scriptet på linje 7 i Kvk2.fil.

det umiddelbare vindue

det umiddelbare vindue ligner konsolvinduet. For eksempel kan du udføre matematiske operationer i det umiddelbare vindue, kontrollere værdierne for variabler osv. Følgende skærmbillede indeholder et eksempel på et øjeblikkeligt vindue.

 server debugging i SSMS - øjeblikkeligt vindue

SSMS - øjeblikkeligt vindue

Bemærk: cls-kommandoen rydder det øjeblikkelige vindue!

Breakpoints

et breakpoint er et af de mest anvendte fejlfindingsværktøjer i ethvert programmeringssprog. Breakpoint giver dig mulighed for at angive det sted, hvor din debugger skal stoppe med at udføre koden. De er især nyttige, når du ikke ønsker at debugge alle kodelinjer, snarere vil du kontrollere status for variabler på bestemte steder i din kode.

for at sætte et breakpoint i din kode skal du blot højreklikke på det grå område til venstre for linjen i scriptet, hvor du vil placere dit breakpoint. Alternativt tilføjer et tryk på F9 automatisk et breakpoint til linjen. Hvis du trykker på F9-tasten igen, fjernes breakpoint.

 server debugging i SSMS-Break points

fejlsøgning i SSMS-Break points

du kan se i figuren ovenfor, at der er tilføjet et breakpoint til den linje, der udfører den lagrede procedure “spshooddnumbers” i SSMS-serveren. Debug dette script. Du vil se, at debuggeren starter ved første linje i scriptet.

 server debugging i SSMS-debuggeren starter i første linje af scriptet

SSMS - debuggeren starter i den første linje i scriptet

Tryk nu på ALT + F5 eller gå til debug-menuen igen og klik på Debug – > Fortsæt. Du vil se, at i stedet for at debugge den næste linje, springer debuggeren direkte til den nærmeste linje med breakpoint.

 server debugging i SSMS-tilføjelse af et ur-Tryk på ALT + F5

alt + F5

du kan også oprette betingede breakpoints. Betingede breakpoints rammes kun, når specificerede betingelser er opfyldt.

for at angive en betingelse på breakpoint skal du blot højreklikke på breakpoint og vælge “betingelser” som vist i nedenstående figur:

 fejlsøgning af en server gemt procedure i SSMS-betingelser

fejlsøgning af en server gemt procedure i SSMS - betingelser

et nyt vindue åbnes, hvor du kan angive de betingelser, der skal opfyldes, før et breakpoint kan ramme. Hvis du ønsker, at dette breakpoint kun skal blive ramt, når @Laverrange er større end 15, kan du tilføje dette som betingelse, som vist på billedet nedenfor:

fejlfinding af en gemt procedure i SSMS - Indstillingsvariabler for en tilstand

konklusion

i denne artikel diskuterede vi, hvilke forskellige muligheder Microsoft Server Management Studio giver mulighed for fejlfinding af et script eller gemt procedure i SSMS-serveren.

andre gode artikler fra Ben

Sådan bruger du indbyggede funktioner og opretter brugerdefinerede skalarfunktioner

Sådan bruger du vinduesfunktioner

fejlfinding af lagrede procedurer i Server Management Studio (SSMS)

  • forfatter
  • Seneste indlæg
Ben Richardson
Ben Richardson driver Acuity Training en førende udbyder af uddannelse i Storbritannien. Det tilbyder et komplet udvalg af træning fra introduktionskurser til avanceret administration og datalageruddannelse – se her for flere detaljer. Acuity har kontorer i London og Guildford, Surrey. Han blogger også lejlighedsvis på Acuity ‘ s blog
se alle indlæg af Ben Richardson

Ben Richardson
Seneste indlæg af Ben Richardson (se alle)
  • arbejde med magt BI rapport temaer-25. februar 2021
  • strøm BI: Vandfaldskort og kombineret grafik – 19. januar 2021
  • strøm BI: Betinget formatering og datafarver i aktion – januar 14, 2021