SQLShack
depanarea este una dintre cele mai importante, dar dureroase părți ale oricărui proces software. Pentru a găsi unele erori, trebuie să rulați codul pas cu pas pentru a vedea ce secțiune a codului este responsabilă pentru eroare. Aceasta se numește depanare runtime.
din fericire, SQL Server Management Studio (SSMS) vine cu capabilități automate de depanare pentru a ajuta dezvoltatorii depana script-urile lor. În acest articol, vom explica practic modul în care SSMS poate fi utilizat pentru a depana procedurile stocate în SQL Server lucrând printr-un exemplu foarte simplu.
exemplu
pentru exemplul nostru, vom folosi o procedură stocată „spShowOddNumbers” care ia două numere ca parametri și imprimă toate numerele impare dintre cele două numere specificate.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
creați procedura spShowOddNumbers
@LowerRange INT,
@UpperRange INT
ca
începe
în timp ce(@lowerrange < @UpperRange)
începe
dacă(@lowerrange%2 != 0)
BEGIN
PRINT @LOWERRANGE
END
SET @LowerRange = @LowerRange + 1
END
PRINT ‘numere impare imprimate între’ + RTRIM(@lowerrange) + ‘ și ‘ + rtrim(@UpperRange)
sfârșit
|
scriptul care apelează procedura stocată în SQL Server:
1
2
3
4
5
6
7
8
9
|
declarați @ lowerrange INT
setați @lowerrange = 5
declarați @upperrange INT
setați @upperrange = 20
EXEC spShowOddNumbers @lowerrange, @upperrange
DROP PROC spShowOddNumbers
|
Opțiuni de depanare
în SQL Server Management Studio, aveți o varietate de opțiuni de depanare.
Start Debugging
pentru a începe depanarea o procedură SQL server stocate în SQL Server, apăsați ALT + F5, sau du-te la Debug – > start Debugging, așa cum se arată în figura de mai jos:
după pornirea depanatorului în fereastra în care apelați procedura stocată în SQL Server, veți vedea că va exista un cursor Galben la începutul ferestrei de interogare așa cum se arată mai jos:
acum ați început depanarea, puteți trece prin cod.
pas cu pas prin Script
există trei opțiuni pentru a pas prin codul: 1) pas peste, 2) pas în și 3) pas afară. Puteți vedea aceste opțiuni făcând clic pe Depanare așa cum se arată în captura de ecran de mai jos:
- pasul peste (F 10)
pasul peste pur și simplu mută cursorul la următoarea linie de script executabil. De exemplu, dacă depanatorul se află în următoarea locație din script:
făcând clic pe Step Over sau apăsând F10 pur și simplu mută cursorul la următoarea linie:
- pasul în (F 11)
aceasta este una dintre cele mai importante și utile caracteristici de depanare. Pasul În vă permite să intrați în scriptul de procedură stocat din scriptul care apelează acea procedură stocată.
este important să menționăm că pas în lucrări ca pas peste. Dacă linia de script executat nu conține nici un apel la procedura stocată în SQL Server.
de exemplu, dacă pas în La:
1SET @upperrange = 20depanatorul va muta pur și simplu controlul la linia următoare:
1SPSHOWODDNUMBERS @ lowerrange, @ upperrangelinia de mai sus conține un apel la procedura stocată în SQL Server. Acum, dacă pas în la această linie de script, debugger vă va duce la script-ul de ‘spShowOddNumbers’ stocate procedura așa cum se arată în figura următoare.
- pasul afară (Shift + F11)
pasul afară este opusul pasului în. Dacă vă aflați într-o procedură stocată în SQL Server și doriți să reveniți la scriptul care apelează procedura stocată, puteți utiliza pasul afară. De exemplu, dacă faceți clic pe pas peste la:
1în timp ce (@LowerRange < @UpperRange)depanatorul vă va duce înapoi la scriptul care apelează funcția, adică
rulați la Cursor
Opțiuni de depanare executați o linie la un moment dat. Dacă există o buclă sau o bucată lungă de cod pe care doriți ca depanatorul dvs. să o ignore, puteți utiliza opțiunea ‘Run To Cursor’.
1
|
în timp ce (@LowerRange < @UpperRange)
|
de exemplu, dacă cursorul se află la următoarea linie a procedurii stocate în SQL Server și doriți să săriți bucla și să mergeți la instrucțiunea de imprimare după buclă. Puteți merge pur și simplu declarația de imprimare și faceți clic pe „Run la Cursor” așa cum se arată mai jos:
bucla va fi omisă și cursorul dvs. va indica acum instrucțiunea de imprimare.
fereastra locală
fereastra locală vă ajută să urmăriți valorile variabilelor din script. În acest exemplu, avem două variabile @LowerRange și @UpperRange în scriptul nostru. La începutul buclei while în procedura stocată în SQL Server valoarea variabilei @LowerRange este 5 în timp ce variabila @ UpperRange este 20 așa cum se arată în figura de mai jos:
odată ce executați bucla și apoi verificați valoarea variabilelor, veți vedea că variabilele @LowerRange și @UpperRange vor afișa ambele 20 ca valoare. Fereastra Locals afișează numele, valoarea și tipul variabilei. Folosind fereastra localnici face foarte simplu să puteți urmări modificările valorilor variabilelor dvs. pe măsură ce progresați prin script.
dacă închideți accidental fereastra localnicilor și doriți să o aduceți înapoi, puteți merge pur și simplu la Debug – > Windows – > Locals așa cum se arată mai jos:
fereastra Watch
fereastra Watch este foarte asemănătoare cu fereastra Locals. Singura diferență este că puteți adăuga sau elimina variabile din fereastra Watch, care poate fi utilă atunci când lucrați cu un număr mare de variabile în scripturi mai mari.
pentru a adăuga o variabilă la fereastra Watch, pur și simplu selectați variabila, faceți clic dreapta și apoi selectați „Add Watch” așa cum se arată în următoarea captură de ecran:
în mod similar, pentru a elimina o variabilă, faceți clic dreapta pe numele variabilei din fereastra Watch și faceți clic pe „ștergeți ceasul” din lista de opțiuni. După cum se arată mai jos:
stiva de apeluri
stiva de apeluri, după cum sugerează și numele, afișează stiva de apeluri care au fost executate până la punctul curent.
prima linie a stivei de apeluri din figura de mai sus, ne spune că în prezent procedura stocată spShowOddNumbers este executată și în momentul în care depanatorul se află la linia 14 a fișierului care conține această procedură stocată. A doua linie indică faptul că această procedură stocată a fost apelată din scriptul de la linia 7 a SQLQuery2.fișier sql.
fereastra imediată
fereastra imediată este similară cu fereastra consolei. De exemplu, puteți efectua operații matematice în fereastra imediată, puteți verifica valorile variabilelor etc. Următoarea captură de ecran conține un exemplu de fereastră imediată.
notă: comanda cls șterge fereastra imediată!
puncte de întrerupere
un punct de întrerupere este unul dintre cele mai utilizate instrumente de depanare în orice limbaj de programare. Breakpoint vă permite să specificați locația în care doriți debugger pentru a opri executarea codului. Acestea sunt deosebit de utile atunci când nu doriți să depanați toate liniile de cod, mai degrabă doriți să verificați starea variabilelor în anumite locații din codul dvs.
pentru a pune un punct de întrerupere în codul dvs., pur și simplu faceți clic dreapta pe zona gri din partea stângă a liniei scriptului în care doriți să puneți punctul de întrerupere. Alternativ, apăsarea F9 va adăuga automat un punct de întrerupere liniei. Apăsarea din nou a tastei F9 va elimina punctul de întrerupere.
puteți vedea în figura de mai sus, că un punct de întrerupere a fost adăugat la linia care execută procedura stocată „spShowOddNumbers” în SQL Server. Acum, depanați acest script. Veți vedea că depanatorul va începe la prima linie a scriptului.
Acum apăsați ALT + F5 sau accesați din nou meniul debug și faceți clic pe Debug -> continuare. Veți vedea că, în loc să depanați următoarea linie, depanatorul va sări direct la cea mai apropiată linie cu punctul de întrerupere.
de asemenea, puteți crea puncte de întrerupere condiționale. Punctele de întrerupere condiționate sunt atinse numai atunci când sunt îndeplinite condițiile specificate.
pentru a specifica o condiție pe punctul de întrerupere, pur și simplu faceți clic dreapta pe punctul de întrerupere și selectați „condiții” așa cum se arată în figura de mai jos:
o fereastră nouă va fi deschis în cazul în care puteți specifica condițiile care trebuie îndeplinite înainte de un punct de întrerupere poate lovi. Dacă doriți ca acest punct de întrerupere să fie lovit numai atunci când @LowerRange este mai mare de 15, puteți adăuga acest lucru ca condiție, așa cum se arată în imaginea de mai jos:
concluzie
în acest articol, am discutat ce opțiuni diferite nu Microsoft SQL Server Management Studio prevede pentru depanare un script sau stocate procedură în SQL Server.
alte articole de mare de la Ben
cum să utilizați SQL Server built-in funcții și de a crea funcții scalare definite de utilizator
cum să utilizați funcțiile Window
depanarea procedurilor stocate în SQL Server Management Studio (SSMS)
- autor
- Postări recente
Vezi toate mesajele de Ben Richardson
- lucrul cu temele raportului Power BI-25 februarie 2021
- Power BI: diagrame cascadă și imagini combinate – 19 ianuarie 2021
- Power BI: Formatarea condiționată și culorile datelor în acțiune-ianuarie 14, 2021