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:
käynnistettyäsi vianetsintätyökalun ikkunassa, jossa soitat tallennettua menettelyä SQL Server-palvelimessa, näet, että kyselyikkunan alussa on keltainen kursori kuten alla:
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:
- Step Over (F 10)
Step Over siirtää kursorin yksinkertaisesti suoritettavan komentosarjan seuraavalle riville. Esimerkiksi, jos debuggeri on komentosarjan seuraavassa paikassa:
napsauttamalla Step Over tai painamalla F10 siirtää kursorin seuraavalle riville:
- 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:
1aseta @upperrange = 20debuggeri siirtää ohjaimen seuraavalle riville:
1EXEC spShowOddNumbers @lowerrange, @upperrangeyllä 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.
- 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:
1WHILE (@LowerRange < @UpperRange)vianetsintä vie sinut takaisin komentosarjaan, joka kutsuu funktiota eli
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:
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:
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:
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:
vastaavasti, poistaa muuttujan, hiiren kakkospainikkeella muuttujan nimi katsella ikkunassa ja valitse ”Poista katsella” luettelosta vaihtoehtoja. Kuten alla näkyy:
the Call Stack
the Call Stack, kuten nimestä voi päätellä, näyttää stack of calls that has dusted up to the current point.
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.
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.
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ä.
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.
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:
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:
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ä
Katso kaikki viestit Ben Richardson
- 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