SQLShack

a hibakeresés minden szoftverfolyamat egyik legfontosabb, de fájdalmas része. Néhány hiba megtalálásához lépésről lépésre kell futtatnia a kódot, hogy megnézze, a kód melyik része felelős a hibáért. Ezt hívják futásidejű hibakeresésnek.

szerencsére az SQL Server Management Studio (SSMS) automatikus hibakeresési képességekkel rendelkezik, amelyek segítenek a fejlesztőknek a szkriptek hibakeresésében. Ebben a cikkben gyakorlatilag elmagyarázzuk, hogy az SSMS hogyan használható az SQL Server tárolt eljárásainak hibakeresésére egy nagyon egyszerű példa segítségével.

Example

példánkban egy “spShowOddNumbers” tárolt eljárást fogunk használni, amely két számot vesz paraméterként, és kiírja az összes páratlan számot a két megadott szám közé.

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

eljárás létrehozása 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 ‘nyomtatott páratlan számok között’ + RTRIM(@Lowerrange) + ‘ és ‘ + RTRIM(@UpperRange)
vége

az SQL Server tárolt eljárását meghívó parancsfájl:

1
2
3
4
5
6
7
8
9

állapítsa @lowerrange INT
állítsa @lowerrange = 5
állapítsa @ upperrange INT
állítsa @upperrange = 20
EXEC spShowOddNumbers @lowerrange, @ upperrange
dobja PROC spShowOddNumbers

hibakeresési lehetőségek

az SQL Server Management Studio alkalmazásban számos hibakeresési lehetőség áll rendelkezésre.

hibakeresés megkezdése

az SQL server által tárolt eljárás hibakeresésének megkezdéséhez nyomja meg az ALT + F5 billentyűt, vagy lépjen a Debug -> hibakeresés megkezdése menüpontra, az alábbi ábra szerint:

indítsa el a tárolt eljárás hibakeresését az SQL-ben

indítsa el a tárolt eljárás hibakeresését az SQL - ben

miután elindította a hibakeresőt abban az ablakban, ahová az SQL Server tárolt eljárását hívja, látni fogja, hogy a lekérdezési ablak elején sárga kurzor jelenik meg, az alábbiak szerint:

 a tárolt eljárás hibakeresésének megkezdése SQL-sárga kurzorpozícióban

a tárolt eljárás hibakeresésének megkezdése SQL-ben-sárga kurzor pozíció

most, hogy elkezdte a hibakeresést, átlépheti a kódot.

lépjünk át a szkripten

három lehetőség van a kód átlépésére: 1) lépjünk át, 2) lépjünk be és 3) lépjünk ki. Ezeket a lehetőségeket a gombra kattintva láthatja hibakeresés az alábbi képernyőképen látható módon:

 SQL Server hibakeresés-lépjen ki

SQL Server hibakeresés-lépjen ki
  1. Step Over (F 10)

    Step Over egyszerűen mozgatja a kurzort a végrehajtható szkript következő sorába. Például, ha a hibakereső a következő helyen van a szkriptben:

    SQL Server hibakeresés-lépés előre

    SQL Server hibakeresés - lépj át-mielőtt

    a Lépj túl gombra kattintva vagy az F10 megnyomásával egyszerűen a kurzort a következő sorra mozgatja:

     SQL Server hibakeresés-lépés után

    SQL Server hibakeresés-lépés után
  2. lépj be (F 11)

    ez az egyik legfontosabb és leghasznosabb hibakeresési funkció. Lépj be lehetővé teszi, hogy betörjön a tárolt eljárás script a script, amely felhívja, hogy a tárolt eljárás.

    fontos megemlíteni, hogy a Step into olyan művek, mint a Step Over. Ha a végrehajtandó parancsfájl sora nem tartalmaz hívást az SQL Server tárolt eljárására.

    például, ha belép a:

    1
    SET @ upperrange = 20

    a hibakereső egyszerűen áthelyezi a vezérlőt a következő sorra:

    1
    EXEC spShowOddNumbers @lowerrange, @ upperrange

    a fenti sor tartalmazza az SQL Server tárolt eljárásának hívását. Most, ha belépsz a szkript ezen sorába, a hibakereső az ‘spShowOddNumbers’ tárolt eljárás szkriptjéhez vezet, az alábbi ábrán látható módon.

     SQL Server hibakeresés-LÉPJEN BE

    SQL Server hibakeresés-LÉPJEN BE
  3. Step Out (Shift + F11)

    a Step Out a Step in ellentéte. Ha az SQL Server tárolt eljárásán belül van, és vissza szeretne térni a tárolt eljárást meghívó parancsfájlhoz, használhatja a kilépést. Például, ha rákattint a lépésre:

    1
    WHILE (@LowerRange & lt; @ UpperRange)

    a hibakereső visszatér a függvényt meghívó szkripthez, azaz

     SQL Server hibakeresés-lépjen ki

    SQL Server hibakeresés-lépjen ki

Futtatás a kurzor

hibakeresési lehetőségek végre egy sort egy időben. Ha van egy hurok vagy egy hosszú kóddarab, amelyet a hibakeresőnek át kell hagynia, használhatja a ‘Futtatás a Kurzorhoz’ opciót.

1
WHILE (@LowerRange < @UpperRange)

például, ha a kurzor az SQL Server tárolt eljárásának következő sorában van, és át akarja hagyni a ciklust, és a ciklus után a nyomtatási utasításhoz szeretne menni. Egyszerűen megy a nyomtatási utasítást, majd kattintson a “Futtatás kurzor” az alábbiak szerint:

 SQL Server hibakeresés-Futtatás a Kurzorhoz

SQL Server hibakeresés-Futtatás a Kurzorhoz

a ciklus kihagyásra kerül, és a kurzor most a nyomtatási utasításra mutat.

a helyi ablak

a helyi ablak segít nyomon követni a változók értékeit a szkriptben. Ebben a példában két változó van @LowerRange és @UpperRange a szkriptünkben. Az SQL Server tárolt eljárásának while ciklusának kezdetén a @LowerRange változó értéke 5, míg a @UpperRange változó 20, amint az az alábbi ábrán látható:

SQL Server hibakeresés-a helyi ablak

SQL Server hibakeresés-a helyi ablak

miután végrehajtotta a ciklust, majd ellenőrizte a változók értékét, látni fogja, hogy a @LowerRange és a @UpperRange változók egyaránt 20 értéket mutatnak. A Locals ablak megjeleníti a változó nevét, értékét és típusát. A helyiek ablak segítségével nagyon egyszerű, hogy nyomon követheti a változásokat az értékek a változók, amit elért a script.

ha véletlenül bezárja a helyiek ablakot, és vissza akarja hozni, egyszerűen menjen a Debug – > Windows – > helyiek az alábbiak szerint:

SQL Server hibakeresés-lépés a helyi változók felett

SQL Server hibakeresés-lépj át-helyi változók

a Figyelőablak

a Figyelőablak nagyon hasonlít a helyiek ablakához. Az egyetlen különbség az, hogy hozzáadhat vagy eltávolíthat változókat az Óraablakból, ami hasznos lehet, ha nagy számú változóval dolgozik nagyobb szkriptekben.

változó hozzáadásához az Óraablakhoz egyszerűen válassza ki a változót, kattintson a jobb gombbal, majd válassza az “óra hozzáadása” lehetőséget, amint az a következő képernyőképen látható:

SQL Server hibakeresés SSMS - ben - óra hozzáadása

SQL Server hibakeresés SSMS - ben-óra hozzáadása

Hasonlóképpen, egy változó eltávolításához kattintson a jobb gombbal a változó nevére az óra ablakban, majd kattintson az “óra törlése” gombra az opciók listájából. Az alábbiak szerint:

 SQL Server hibakeresés SSMS-ben-óra törlése

SQL Server hibakeresés SSMS-ben-óra törlése

a hívás verem

a hívás verem, ahogy a neve is sugallja, megjeleníti az aktuális pontig végrehajtott hívások veremét.

 SQL Server hibakeresés SSMS - ben-a hívásköteg

SQL Server hibakeresés SSMS - ben-a hívásköteg

a fenti ábrán látható Hívásköteg első sora azt mondja nekünk, hogy jelenleg az spShowOddNumbers tárolt eljárás végrehajtása zajlik, és abban a pillanatban a hibakereső a tárolt eljárást tartalmazó fájl 14.sorában van. A második sor azt jelzi, hogy ezt a tárolt eljárást az sqlquery2 7.sorában lévő szkriptből hívták meg.sql fájl.

az azonnali ablak

az azonnali ablak hasonló a konzol ablakához. Például matematikai műveleteket hajthat végre az azonnali ablakban, ellenőrizheti a változók értékeit stb. A következő képernyőkép egy azonnali ablak példáját tartalmazza.

 SQL Server hibakeresés SSMS-ben-azonnali ablak

SQL Server hibakeresés SSMS-azonnali ablakban

megjegyzés: a cls parancs törli az azonnali ablakot!

töréspontok

a töréspont az egyik leggyakrabban használt hibakereső eszköz bármely programozási nyelvben. A Breakpoint segítségével megadhatja azt a helyet, ahol a hibakereső leállítja a kód végrehajtását. Különösen akkor hasznosak, ha nem akarja hibakeresni az összes kódsort, inkább a változók állapotát szeretné ellenőrizni a kód meghatározott helyein.

töréspont beírásához egyszerűen kattintson a jobb gombbal a szkript sorának bal oldalán található szürke területre, ahová a töréspontot szeretné tenni. Alternatív megoldásként az F9 megnyomásával automatikusan töréspontot ad a vonalhoz. Az F9 billentyű újbóli megnyomása eltávolítja a töréspontot.

 SQL Server hibakeresés SSMS-Töréspontokban

SQL Server hibakeresés SSMS-ben-töréspontok

a fenti ábrán látható, hogy egy töréspont került hozzáadásra az SQL Server “spShowOddNumbers” tárolt eljárását végrehajtó sorhoz. Most, hibakeresés ezt a forgatókönyvet. Látni fogja, hogy a hibakereső a szkript első sorában indul.

 SQL Server hibakeresés SSMS - ben - a hibakereső a szkript első sorában kezdődik

SQL Server hibakeresés SSMS - ben-a hibakereső a szkript első sorában kezdődik

most nyomja meg az ALT + F5 billentyűt, vagy lépjen újra a hibakeresés menübe, majd kattintson a hibakeresés -> Folytatás gombra. Látni fogja, hogy a következő sor hibakeresése helyett a hibakereső egyenesen a legközelebbi vonalra ugrik a törésponttal.

 SQL Server hibakeresés SSMS-ben-óra hozzáadása-nyomja meg az ALT + F5 billentyűkombinációt

SQL Server hibakeresés SSMS-ben-óra hozzáadása-nyomja meg az ALT + F5

feltételes töréspontokat is létrehozhat. A feltételes töréspontokat csak meghatározott feltételek teljesülése esetén érik el.

a töréspont feltételének megadásához egyszerűen kattintson a jobb gombbal a töréspontra, majd válassza az alábbi ábrán látható “feltételek” lehetőséget:

 SQL Server tárolt eljárás hibakeresése SSMS-körülmények között

SQL Server tárolt eljárás hibakeresése SSMS-feltételek

új ablak nyílik meg, ahol megadhatja a töréspont elérése előtt teljesítendő feltételeket. Ha azt szeretné, hogy ezt a töréspontot csak akkor érje el, ha a @LowerRange nagyobb, mint 15, akkor ezt feltételként adhatja hozzá, amint az az alábbi képen látható:

SQL Server tárolt eljárás hibakeresése SSMS - ben-változók beállítása egy

feltételhez következtetés

ebben a cikkben azt tárgyaltuk, hogy a Microsoft SQL Server Management Studio milyen különböző lehetőségeket biztosít egy szkript vagy tárolt eljárás hibakereséséhez az SQL Server rendszerben.

egyéb nagy cikkek Ben

hogyan kell használni az SQL Server beépített funkciók és hozzon létre a felhasználó által definiált skalár funkciók

hogyan kell használni ablak funkciók

hibakeresés tárolt eljárások SQL Server Management Studio (SSMS)

  • szerző
  • Legutóbbi hozzászólások
Ben Richardson
Ben Richardson az Acuity Training-et vezeti az SQL training vezető szolgáltatója az Egyesült Királyságban. Az SQL képzés teljes skáláját kínálja a bevezető tanfolyamoktól a fejlett adminisztrációig és az adattárház – képzésig-további részletekért lásd itt. Az Acuity-nek Londonban és Guildfordban, Surrey-ben vannak irodái. Időnként blogol az Acuity blogján is
ben Richardson összes hozzászólásának megtekintése

Ben Richardson
Ben Richardson legújabb hozzászólásai (az összes megtekintése)
  • munka a Power BI jelentés témáival-február 25, 2021
  • Power BI: Vízesésdiagramok és kombinált látványelemek-január 19, 2021
  • Power BI: Feltételes formázás és adatszínek működés közben-január 14, 2021