SQLShack

Ladění je jedním z nejdůležitějších, ale bolestivé části softwarového procesu. Chcete-li najít některé chyby, musíte spustit kód krok za krokem, abyste zjistili, která část kódu je za chybu zodpovědná. Tomu se říká Runtime ladění.

naštěstí SQL Server Management Studio (SSMS) přichází s automatizovanými možnostmi ladění, které vývojářům pomáhají ladit jejich skripty. V tomto článku si prakticky vysvětlíme, jak lze SSMS použít k ladění uložených procedur v SQL Serveru pomocí velmi jednoduchého příkladu.

Příklad

Pro náš příklad, budeme používat uložené procedury „spShowOddNumbers“, která trvá dvě čísla jako jeho parametry a vytiskne lichá čísla mezi ty dvě zadané čísla.

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

VYTVOŘIT POSTUP spShowOddNumbers
@LowerRange INT,
@UpperRange INT
BEGIN
WHILE(@LowerRange < @UpperRange)
BEGIN
, pokud(@LowerRange%2 != 0)
BEGIN
PRINT @LowerRange
END
SET @LowerRange = @LowerRange + 1
END
PRINT ‚TISKNOUT LICHÁ ČÍSLA MEZI‘ + RTRIM(@lowerRange) + ‚ a ‚ + RTRIM(@UpperRange)
END

skript, který volá uložená procedura v SQL Server:

1
2
3
4
5
6
7
8
9

PROHLAŠUJI, @lowerrange INT
SET @lowerrange = 5
DECLARE @upperrange INT
SET @upperrange = 20
EXEC spShowOddNumbers @lowerrange, @upperrange
DROP PROC spShowOddNumbers

možnosti Ladění

V SQL Server Management Studio máte různé možnosti ladění.

Start Debugging

spustit ladění serveru SQL server uložené procedury v SQL Server, stiskněte ALT + F5, nebo jít do Debug -> Spustit Ladění, jak je znázorněno na obrázku níže:

Spustit ladění uložené procedury v SQL

Spustit ladění uložené procedury v SQL

Po spuštění ladicího programu v okně, kde se volá uložená procedura v SQL Server, uvidíte, že tam bude žlutý kurzor na začátek okna dotazu, jak je znázorněno níže:

Výchozí ladění uložené procedury v SQL - žlutá pozici kurzoru

Spuštění ladění uložené procedury v SQL - žlutá pozici kurzoru

Teď jste začali ladění můžete krokovat kód.

krokování skriptem

existují tři možnosti, jak projít kódem: 1) překročit, 2) vstoupit a 3) vystoupit. Tyto možnosti můžete zobrazit kliknutím na ladění, jak je znázorněno na obrázku níže:

SQL Server ladění - Krok ven

SQL Server ladění - Krok ven
  1. Krok Přes (F 10)

    Krok Přes jednoduše přesune kurzor na další řádek spustitelný skript. Například, pokud ladicí program je v následujícím umístění ve skriptu:

    SQL Server ladění - Krok - před

    SQL Server ladění - Krok - před

    Klepnutím na tlačítko Krok Přes nebo stiskem F10 jednoduše přesune kurzor na následující řádek:

    SQL Server ladění - Krok - po

    SQL Server ladění - Krok - po
  2. Krok Do (F 11)

    To je jeden z nejvíce důležité a užitečné funkce ladění. Krok do umožňuje proniknout do uloženého skriptu procedur ze skriptu, který volá uloženou proceduru.

    je důležité zmínit, že Step Into funguje jako Step Over. Pokud řádek spouštěného skriptu neobsahuje žádné volání na uloženou proceduru v SQL Serveru.

    například pokud vstoupíte do:

    1
    SET @upperrange = 20

    ladicí program bude jednoduše přesunout řízení na další řádek:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    výše uvedený řádek obsahuje volání uložená procedura v SQL Server. Nyní, pokud jste Krok Do tohoto řádku skriptu, ladicí program bude trvat do skriptu ‚spShowOddNumbers‘ uložená procedura, jak je znázorněno na následujícím obrázku.

    SQL Server ladění - Krok do

    SQL Server ladění - Krok do
  3. Step Out (Shift + F11)

    Krok Ven je opačný Krok. Pokud jste uvnitř uložené procedury v SQL Serveru a chcete se vrátit ke skriptu, který volá uloženou proceduru, můžete použít krok ven. Například, pokud kliknete na krok na:

    1
    ZATÍMCO(@LowerRange &lt; @UpperRange)

    Ladicí program bude trvat vás zpět do skriptu, který volá funkci, tj.

    SQL Server ladění - Krok ven

    SQL Server ladění - Krok ven

Spustit Ke Kurzoru

možnosti Ladění spustit jeden řádek najednou. Pokud je smyčka nebo dlouhý kus kódu, který chcete, aby vaše debuggeru přeskočit, můžete použít ‚Kurzor‘ volba.

1
ZATÍMCO(@LowerRange < @UpperRange)

například, je-li kurzor na následující řádek uložené procedury v SQL Server a chcete přeskočit smyčky a jít do tisku prohlášení po smyčce. Můžete jednoduše přejít na tiskový příkaz a kliknout na“ spustit na kurzor“, jak je uvedeno níže:

 ladění SQL Serveru-spustit na kurzor

ladění SQL Serveru-spusťte kurzor

smyčka bude přeskočena a kurzor bude nyní ukazovat na tiskový příkaz.

Místní Okno

místní okno vám pomůže sledovat hodnoty proměnných ve skriptu. V tomto příkladu máme v našem skriptu dvě proměnné @LowerRange a @UpperRange. Na začátku smyčky while v uložené proceduře v SQL Serveru je hodnota proměnné @LowerRange 5, zatímco proměnná @UpperRange je 20, jak je znázorněno na obrázku níže:

SQL Server ladění -místní okno

SQL Server ladění -místní okno

po spuštění smyčky a pak zkontrolujte hodnotu proměnné uvidíte, že @LowerRange a @UpperRange proměnné budou zobrazovat 20 jako jejich hodnota. V okně místní obyvatelé se zobrazí název, hodnota a typ proměnné. Pomocí okna Locals je velmi jednoduché sledovat změny v hodnotách proměnných, jak budete postupovat prostřednictvím skriptu.

Pokud zavřete okno Locals omylem a chcete, aby ji zpět, můžete jednoduše jít do Debug -> Windows> Místní obyvatelé, jak je uvedeno níže:

SQL Server ladění - Krok - lokální proměnné

SQL Server ladění - Krok - lokální proměnné

Hodinky Okna

Hodinky okno je velmi podobné okno Locals. Jediným rozdílem je, že můžete přidat nebo odebrat proměnné z okna Hodinky, což může být užitečné při práci s velkým počtem proměnných ve větších skriptech.

Chcete-li přidat proměnnou do Hodinky okna, jednoduše vyberte proměnnou, klepněte pravým tlačítkem myši a poté vyberte možnost „Add Watch“, jak je znázorněno na následujícím obrázku:

SQL Server ladění v SSMS - přidání hodinky

SQL Server ladění v SSMS - přidání hodinky

Podobně, odstranit proměnné, klepněte pravým tlačítkem myši na název proměnné v okně kukátka a klikněte na tlačítko „Delete Hodinky“ ze seznamu možností. Jak je uvedeno níže:

SQL Server ladění v SSMS - mazání hodinky

SQL Server ladění v SSMS - mazání hodinky

Call Stack

Zásobník Volání, jak název napovídá, zobrazí zásobník volání, které byly provedeny až do současného bodu.

SQL Server ladění v SSMS - zásobník volání

SQL Server ladění v SSMS - call stack

první řádek v Zásobník Volání na obrázku výše, nám říká, že v současné době spShowOddNumbers uložená procedura je proveden, a v okamžiku, kdy ladicí program je na lince 14 ze souboru, který obsahuje uložené procedury. Druhý řádek označuje, že tato uložená procedura byla volána ze skriptu na řádku 7 SQLQuery2.sql soubor.

bezprostřední okno

bezprostřední okno je podobné oknu konzoly. Můžete například provádět matematické operace v bezprostředním okně, zkontrolovat hodnoty proměnných atd. Následující snímek obrazovky obsahuje příklad okamžitého okna.

SQL Server ladění v SSMS - immediate

SQL Server ladění v SSMS - immediate

Poznámka: příkaz cls vymaže immediate!

zarážky

zarážka je jedním z nejčastěji používaných ladicích nástrojů v jakémkoli programovacím jazyce. Zarážka umožňuje určit umístění, kde chcete, aby váš debugger přestal provádět kód. Přijdou obzvlášť vhod, když nechceš ladit všechny řádky kódu, spíše chcete zkontrolovat stav proměnných na konkrétních místech v kódu.

Chcete-li do kódu vložit zarážku, jednoduše klikněte pravým tlačítkem myši na šedou oblast na levé straně řádku skriptu, kam chcete vložit zarážku. Alternativně stisknutím klávesy F9 automaticky přidáte do řádku zarážku. Opětovným stisknutím klávesy F9 se odstraní zarážka.

SQL Server ladění v SSMS - Break bodů

SQL Server ladění v SSMS - Break bodů

můžete vidět na obrázku výše, že breakpoint byl přidán řádek, který spustí „spShowOddNumbers“ uložené procedury v SQL Server. Nyní ladit tento skript. Uvidíte, že debugger se spustí na prvním řádku skriptu.

SQL Server ladění v SSMS - ladicí program začíná v prvním řádku skriptu

SQL Server ladění v SSMS - ladicí program začíná v prvním řádku skriptu

Nyní stiskněte ALT + F5, nebo jít do debug menu znovu a klepněte na tlačítko Debug -> Pokračovat. Uvidíte, že místo ladění dalšího řádku ladicí program skočí přímo na nejbližší řádek s bodem přerušení.

SQL Server ladění v SSMS - přidání hodinky - Stiskněte ALT + F5

SQL Server ladění v SSMS - přidání hodinky - Stiskněte ALT + F5

můžete také vytvořit podmíněné zarážky. Podmíněné zarážky jsou zasaženy pouze tehdy, jsou-li splněny stanovené podmínky.

Chcete-li určit podmínku na zarážce, jednoduše klikněte pravým tlačítkem myši na zarážku a vyberte „podmínky“, jak je znázorněno na obrázku níže:

Ladění serveru SQL Server uložené procedury v SSMS - Podmínky

Ladění serveru SQL Server uložené procedury v SSMS - Podmínky

nové okno se otevře, kde si můžete zadat podmínky, které musí být splněny před tím, než zarážku může zasáhnout. Pokud chcete tuto zarážku jen být hit, když @LowerRange je větší než 15, můžete přidat toto jako podmínku, jak je znázorněno na obrázku níže:

Ladění serveru SQL Server uložené procedury v SSMS - Nastavení proměnných pro stav

Závěr

V tomto článku jsme diskutovali o tom, jaké různé možnosti se Microsoft SQL Server Management Studio poskytuje pro ladění skriptu nebo uložené procedury v SQL Server.

Další skvělé články od Ben

Jak používat SQL Server vestavěné funkce a vytvářet uživatelsky definované skalární funkce

Jak Používat Okno Funkce

Ladění uložené procedury v SQL Server Management Studio (SSMS)

  • Autor
  • Poslední Příspěvky
Ben Richardson
Ben Richardson běží Ostrosti Školení předním poskytovatelem SQL školení ve velké BRITÁNII. Nabízí celou řadu školení SQL od úvodních kurzů až po pokročilé školení správy a datového skladu-další podrobnosti naleznete zde. Acuity má kanceláře v Londýně a Guildfordu v Surrey. On také blogy občas na Ostrosti blog
Zobrazit všechny příspěvky od Ben Richardson

Ben Richardson
Nejnovější příspěvky Ben Richardson (viz všechny)
  • Práci s Power BI zpráva témata – 25. února 2021
  • Power BI: Vodopád Grafy a Kombinované Vizuální – 19. ledna 2021
  • Power BI: Podmíněné formátování a barvy dat v akci-leden 14, 2021