sqlshack

virheenkorjaus on yksi ohjelmistoprosessin tärkeimmistä mutta kivuliaimmista osista. Löytää joitakin virheitä sinun täytyy ajaa koodi askel askeleelta nähdä, mikä osa koodin on vastuussa virhe. Tätä kutsutaan runtime-virheenkorjaukseksi.

onneksi SQL Server Management Studion (SSMS) mukana tulee automatisoituja virheenkorjausominaisuuksia, jotka auttavat kehittäjiä debugaamaan skriptejään. Tässä artikkelissa, selitämme käytännössä, miten SSMS voidaan käyttää debug tallennetut menettelyt SQL Server työskentelemällä hyvin yksinkertainen esimerkki.

esimerkki

esimerkissämme käytetään tallennettua menettelyä ”spShowOddNumbers”, joka ottaa parametreikseen kaksi numeroa ja tulostaa kaikki parittomat numerot näiden kahden määritetyn numeron väliltä.

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

CREATE PROCEDURE spShowOddNumbers
@LowerRange INT,
@UpperRange INT
AS
BEGIN
WHILE(@LowerRange < @UpperRange)
BEGIN
if(@lowerrange%2 != 0)
BEGIN
PRINT @LowerRange
END
SET @LowerRange = @LowerRange + 1
END
PRINT ”PRINTED pariton NUMBERS BETWEEN” + RTRIM(@lowerRange) + ” and ” + RTRIM(@UpperRange)
loppu

skripti, joka kutsuu tallennettua menettelyä SQL Server:

1
2
3
4
5
6
7
8
9

DECLARE @lowerrange INT
SET @lowerrange int
DECLAR @upperrange INT
SET @upperrange INT
Exec spShowOddNumbers @lowerrange, @upperrange
DROP PROC spShowOddNumbers

Vianetsintäasetukset

SQL Server Management studiossa on erilaisia vianetsintävaihtoehtoja.

Aloita Vianetsintä

aloittaaksesi vianetsinnän SQL Server-järjestelmään tallennetussa menettelyssä, paina ALT + F5 tai siirry kohtaan Vianetsintä – > Aloita Vianetsintä alla olevan kuvan mukaisesti:

Aloita tallennetun menettelyn vianetsintä SQL: ssä

Aloita tallennetun menettelyn vianetsintä SQL

käynnistettyäsi vianetsintätyökalun ikkunassa, jossa soitat tallennettua menettelyä SQL Server-palvelimessa, näet, että kyselyikkunan alussa on keltainen kursori kuten alla:

aloitetaan tallennetun menettelyn vianetsintä SQL-keltaisella osoittimella

kun alat debugata tallennettua menettelyä SQL-keltaisessa kohdistimen asemassa

nyt kun olet aloittanut virheenkorjauksen, voit siirtyä koodin läpi.

Stepping Through Script

on kolme vaihtoehtoa astua koodin läpi: 1) Step Over, 2) Step Into ja 3) Step Out. Näet nämä vaihtoehdot klikkaamalla Debug kuten alla olevassa kuvakaappauksessa:

SQL Server debugging-Step out

SQL Server-vianetsintä-astu ulos
  1. Step Over (F 10)

    Step Over siirtää kursorin yksinkertaisesti suoritettavan komentosarjan seuraavalle riville. Esimerkiksi, jos debuggeri on komentosarjan seuraavassa paikassa:

    SQL Server-virheenkorjaus-vaihe yli-ennen

    SQL Server-virheenkorjaus-Step over-before

    napsauttamalla Step Over tai painamalla F10 siirtää kursorin seuraavalle riville:

    SQL Server debugging-Step over-after

    SQL Server-virheenkorjaus-vaihe yli-after
  2. askel (F 11)

    tämä on yksi tärkeimmistä ja hyödyllisimmistä virheenkorjausominaisuuksista. Astu voit murtautua tallennetun menettelyn skripti skripti, joka kutsuu tallennettua menettelyä.

    on tärkeää mainita, että astu Step Overin kaltaisiin teoksiin. Jos suoritettava komentosarjarivi ei sisällä kutsua tallennettuun menettelyyn SQL Server-palvelimessa.

    esimerkiksi jos astut at:

    1
    aseta @upperrange = 20

    debuggeri siirtää ohjaimen seuraavalle riville:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    yllä oleva rivi sisältää puhelun SQL Serverin tallennettuun menettelyyn. Nyt jos astut tällä skriptirivillä, debuggeri vie sinut ’spShowOddNumbers’ tallennetun menettelyn komentosarjaan, kuten seuraavassa kuvassa on esitetty.

    SQL Server-virheenkorjaus-vaihe

    SQL Server-virheenkorjaus-Siirry osaksi
  3. Step Out (Shift + F11)

    Step Out on step in vastakohta. Jos olet sisällä tallennettu menettely SQL Server ja haluat palata skripti, joka kutsuu tallennettua menettelyä voit käyttää Step Out. Esimerkiksi, Jos klikkaat askel yli klo:

    1
    WHILE (@LowerRange &lt; @UpperRange)

    vianetsintä vie sinut takaisin komentosarjaan, joka kutsuu funktiota eli

    SQL Server-vianetsintä-Step out

    SQL Server-vianetsintä-astu ulos

Suorita kohdistimeen

Vianetsintäasetukset suorita yksi rivi kerrallaan. Jos on silmukka tai pitkä koodi, jonka haluat ohittaa debuggerisi, voit käyttää ’Suorita kohdistimeen’ – vaihtoehtoa.

1
WHILE (@LowerRange < @UpperRange)

jos kursori on esimerkiksi SQL Serverin tallennetun menettelyn seuraavalla rivillä ja haluat ohittaa silmukan ja siirtyä silmukan jälkeen tulostuslauseeseen. Voit yksinkertaisesti mennä tulostuslauseke ja klikkaa ”Suorita kohdistin” kuten alla:

SQL Server-virheenkorjaus-Suorita kohdistimeen

SQL Serverin virheenkorjaus-Suorita kohdistimeen

silmukka ohitetaan ja kohdistin osoittaa nyt tulostuslauseeseen.

paikallinen Ikkuna

paikallinen ikkuna auttaa pitämään kirjaa skriptin muuttujien arvoista. Tässä esimerkissä, meillä on kaksi muuttujaa @LowerRange ja @UpperRange meidän script. SQL Serverin tallennetun menettelyn while-silmukan alussa @LowerRange-muuttujan arvo on 5, kun taas @UpperRange-muuttujan arvo on 20, kuten alla olevassa kuvassa on esitetty:

SQL Server-vianetsintä-paikallinen ikkuna

SQL Server-virheenkorjaus-paikallinen ikkuna

kun suoritat silmukan ja tarkistat sitten muuttujien arvon, näet, että @LowerRange ja @UpperRange muuttujat näyttävät molemmat 20 arvonaan. Paikallinen ikkuna näyttää muuttujan nimen, arvon ja tyypin. Paikalliset-ikkunan avulla on hyvin helppoa seurata muuttujien arvojen muutoksia, kun etenet komentosarjan läpi.

Jos suljet paikalliset-ikkunan vahingossa ja haluat palauttaa sen, voit siirtyä Debug – > Windows – > paikalliset kuten alla:

SQL Server-virheenkorjaus-vaihe yli-paikalliset muuttujat

SQL Server debugging-Step over-local variables

the Watch Window

the Watch window is very similar to the local window. Ainoa ero on, että voit lisätä tai poistaa muuttujia Kelloikkunasta, mikä voi olla hyödyllistä, kun työskentelet suurten muuttujien kanssa suuremmissa skripteissä.

lisätäksesi muuttujan kellon ikkunaan, valitse muuttuja, napsauta hiiren kakkospainikkeella ja valitse sitten” lisää Kello”, kuten seuraavassa kuvakaappauksessa näkyy:

SQL Server-vianetsintä SSMS: ssä - kellon lisääminen

SQL Server virheenkorjaus SSMS - lisäämällä katsella

vastaavasti, poistaa muuttujan, hiiren kakkospainikkeella muuttujan nimi katsella ikkunassa ja valitse ”Poista katsella” luettelosta vaihtoehtoja. Kuten alla näkyy:

SQL Server-vianetsintä SSMS: ssä - kellon poistaminen

SQL Server debugging in SSMS-deleting a watch

the Call Stack

the Call Stack, kuten nimestä voi päätellä, näyttää stack of calls that has dusted up to the current point.

SQL Server-vianetsintä SSMS-puhelupinossa

SQL Server debugging in SSMS-puhelupino

edellä olevan kuvan Puhelupinon ensimmäinen rivi kertoo, että tällä hetkellä spshowoddnumbers-tallennettua menettelyä suoritetaan ja tällä hetkellä debuggeri on rivillä 14 tiedostossa, joka sisältää tämän tallennetun menettelyn. Toinen rivi osoittaa, että tämä tallennettu menettely kutsuttiin skripti rivillä 7 SQLQuery2.sql-tiedosto.

välitön Ikkuna

välitön ikkuna on samanlainen kuin konsoli-ikkuna. Voit esimerkiksi suorittaa matemaattisia operaatioita välittömässä ikkunassa, tarkistaa muuttujien arvot jne. Seuraavassa kuvakaappauksessa on esimerkki välittömästä ikkunasta.

SQL Server-vianetsintä SSMS-välittömässä ikkunassa

SQL Server debugging in SSMS-immediate window

Huom: CLS-komento tyhjentää välittömän ikkunan!

Breakpoint

breakpoint on yksi yleisimmin käytetyistä vianetsintätyökaluista millä tahansa ohjelmointikielellä. Keskeytyspisteen avulla voit määrittää sijainnin, jossa haluat debuggerin lopettavan koodin suorittamisen. Ne ovat erityisen hyödyllisiä, kun et halua debugata kaikkia koodirivejä, vaan haluat tarkistaa muuttujien tilan tietyissä kohdissa koodissasi.

jos haluat laittaa keskeytyspisteen koodiisi, napsauta hiiren oikealla painikkeella komentosarjan rivin vasemmalla puolella olevaa harmaata aluetta, johon haluat asettaa keskeytyspisteen. Vaihtoehtoisesti painamalla F9 lisätään automaattisesti keskeytyspiste riviin. Painamalla F9 näppäintä uudelleen poistaa keskeytyspiste.

SQL Server-virheenkorjaus SSMS-Katkopisteissä

SQL Server-virheenkorjaus SSMS-Katkopisteissä

näet yllä olevasta kuvasta, että keskeytyspiste on lisätty riville, joka suorittaa SQL Serveriin tallennetun ”spShowOddNumbers” – menettelyn. Nyt, debug tämä käsikirjoitus. Näet, että debuggeri alkaa komentosarjan ensimmäisellä rivillä.

SQL Server - vianetsintä SSMS: ssä-vianetsintä alkaa komentosarjan ensimmäisellä rivillä

SQL Server debugging in SSMS - debuggeri, joka alkaa skriptin ensimmäisellä rivillä

paina nyt ALT + F5 tai siirry uudelleen debug-valikkoon ja valitse Debug – > Continue. Näet, että seuraavan rivin virheenkorjauksen sijaan debuggeri hyppää suoraan lähimpään viivaan keskeytyspisteen kanssa.

SQL Server - virheenkorjaus SSMS-järjestelmässä-kellopainikkeen lisääminen ALT + F5

SQL Serverin virheenkorjaus SSMS - järjestelmässä-lisäämällä kellopainiketta ALT + F5

Voit myös luoda ehdollisia keskeytyspisteitä. Ehdolliset raja-arvot osuvat vasta, kun tietyt ehdot täyttyvät.

jos haluat määrittää keskeytyspisteen ehdon, Napsauta keskeytyspistettä hiiren kakkospainikkeella ja valitse ”ehdot” alla olevan kuvan mukaisesti:

SQL Serverin tallennetun menettelyn virheenkorjaus SSMS-olosuhteissa

Vianetsintä SQL Server tallennettu menettely SSMS-ehdot

avataan uusi ikkuna, jossa voit määrittää ehdot, jotka on täytettävä ennen kuin keskeytyspiste voi osua. Jos haluat tämän keskeytyspisteen osuvan vain, kun @LowerRange on suurempi kuin 15, voit lisätä tämän ehdoksi, kuten alla olevassa kuvassa näkyy:

Debugging a SQL Server stored procedure in SSMS - SQL Server-Setting variables for a condition

Conclusion

tässä artikkelissa keskustelimme siitä, mitä eri vaihtoehtoja Microsoft SQL Server Management Studio tarjoaa skriptin virheenkorjaukselle tai SQL Serverin tallennetulle menettelylle.

muita hienoja artikkeleita Ben

Kuinka käyttää SQL Serverin sisäänrakennettuja funktioita ja luoda käyttäjän määrittelemiä skalaarifunktioita

Kuinka käyttää Ikkunafunktioita

tallennettujen menettelyjen virheenkorjaus SQL Server Management studiossa (SSMS)

  • tekijä
  • tuoreita viestejä
Ben Richardson
Ben Richardson johtaa Acuity Trainingia, joka on johtava SQL-koulutuksen tarjoaja Britanniassa. Se tarjoaa täyden valikoiman SQL-koulutusta johdantokursseista kehittyneeseen hallinnon ja tietovaraston koulutukseen-katso täältä lisätietoja. Acuitylla on toimistot Lontoossa ja Guildfordissa Surreyssä. Hän myös bloggaa satunnaisesti Acuquity ’ s blog
Katso kaikki viestit Ben Richardson

Ben Richardson
uusimmat viestit Ben Richardson (Näytä kaikki)
  • Working with Power BI report themes – February 25, 2021
  • Power BI: Waterfall Charts and Combined Visuals-January 19, 2021
  • Power BI: Ehdollinen muotoilu ja tietojen värit toiminnassa-tammikuu 14, 2021