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:
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:
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 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:
Klik på trin Over eller tryk på F10 flytter blot markøren til følgende linje:
- 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å:
1SET @upperrange = 20debuggeren 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. - 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å:
1mens (@Laverrange & lt; @UpperRange)debuggeren fører dig tilbage til scriptet, der kalder funktionen, dvs.
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:
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:
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:
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:
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:
Opkaldsstakken
Opkaldsstakken viser, som navnet antyder, stakken af opkald, der er udført op til det aktuelle punkt.
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.
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.
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.
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.
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:
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:
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
se alle indlæg af Ben Richardson
- 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