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:

începeți depanarea unei proceduri stocate în SQL

începeți depanarea unei proceduri stocate în SQL

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:

începând să depanați o procedură stocată în poziția cursorului SQL-galben

începând să depanați o procedură stocată în SQL - poziția cursorului galben

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:

 SQL Server debugging-pas afară

SQL Server debugging-pas afară
  1. 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:

    SQL Server debugging-pas peste-înainte

    SQL Server debugging - step over-înainte de

    făcând clic pe Step Over sau apăsând F10 pur și simplu mută cursorul la următoarea linie:

     depanare SQL Server - pas peste-după

    SQL Server debugging-pas peste-după
  2. 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:

    1
    SET @upperrange = 20

    depanatorul va muta pur și simplu controlul la linia următoare:

    1
    SPSHOWODDNUMBERS @ lowerrange, @ upperrange

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

    depanare SQL Server-pas în

    SQL Server debugging-pas în
  3. 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 &lt; @UpperRange)

    depanatorul vă va duce înapoi la scriptul care apelează funcția, adică

    depanare SQL Server - ieșiți

    SQL Server debugging-pas afară

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:

depanare SQL Server-rulați la cursor

depanare SQL Server-rulați la cursor

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:

SQL Server debugging-fereastra locală

SQL Server debugging-fereastra locală

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:

SQL Server debugging - pas peste-variabile locale

SQL Server debugging - Step over-variabile locale

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:

SQL Server debugging în SSMS-adăugarea unui ceas

depanare SQL Server în SSMS-adăugarea unui ceas

î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:

depanare SQL Server în SSMS-ștergerea unui ceas

depanare SQL Server în SSMS-ștergerea unui ceas

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.

depanare SQL Server în SSMS - stiva de apeluri

SQL Server debugging în SSMS-stiva de apeluri

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

depanare SQL Server în SSMS-fereastră imediată

SQL Server debugging în SSMS-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.

depanare SQL Server în SSMS-puncte de pauză

SQL Server debugging în SSMS-Break points

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.

depanare SQL Server în SSMS-depanatorul începând din prima linie a scriptului

depanare SQL Server în SSMS-depanatorul începând din 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.

SQL Server debugging în SSMS-adăugarea unui ceas - apăsați ALT + F5

SQL Server debugging în SSMS-adăugarea unui ceas - apăsați ALT + F5

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:

depanare o procedură SQL Server stocate în SSMS-condiții

Debugging o procedură SQL Server stocate în SSMS-condiții

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:

Debugging o procedură SQL Server stocate în SSMS - setarea variabile pentru o condiție

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
Ben Richardson
Ben Richardson conduce Acuity Training un important furnizor de formare SQL din Marea Britanie. Oferă o gamă completă de instruire SQL de la cursuri introductive până la instruire avansată în administrare și depozit de date – consultați aici pentru mai multe detalii. Acuity are birouri în Londra și Guildford, Surrey. De asemenea, el blogurile ocazional pe Acuity ‘ s blog
Vezi toate mesajele de Ben Richardson

Ben Richardson
ultimele postări de Ben Richardson (vezi toate)
  • 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