SQLShack

debugowanie jest jedną z najważniejszych, ale bolesnych części każdego procesu oprogramowania. Aby znaleźć błędy, musisz uruchomić kod krok po kroku, aby zobaczyć, która sekcja kodu jest odpowiedzialna za błąd. Nazywa się to debugowaniem środowiska wykonawczego.

na szczęście SQL Server Management Studio (SSMS) oferuje funkcje automatycznego debugowania, aby pomóc programistom debugować ich Skrypty. W tym artykule wyjaśnimy praktycznie, w jaki sposób SSMS może być używany do debugowania procedur składowanych w SQL Server, korzystając z bardzo prostego przykładu.

przykład

w naszym przykładzie użyjemy procedury składowanej „spShowOddNumbers”, która przyjmuje dwie liczby jako swoje parametry i wypisuje wszystkie nieparzyste liczby między tymi dwoma określonymi liczbami.

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

Utwórz procedurę 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 'drukowane nieparzyste liczby pomiędzy’ + RTRIM(@lowerRange) + ’ i ’ + RTRIM(@UpperRange)
koniec

skrypt wywołujący procedurę składowaną w SQL Server:

1
2
3
4
5
6
7
8
9

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

Opcje debugowania

w SQL Server Management Studio masz wiele opcji debugowania.

Rozpocznij debugowanie

aby rozpocząć debugowanie procedury składowanej SQL server w SQL Server, naciśnij ALT + F5 lub przejdź do Debug – > Rozpocznij debugowanie, jak pokazano na poniższym rysunku:

Rozpocznij debugowanie procedury składowanej w SQL

Rozpocznij debugowanie procedury składowanej w SQL

po uruchomieniu debugera w oknie, w którym wywołujesz procedurę składowaną w SQL Server, zobaczysz, że na początku okna zapytania pojawi się żółty kursor, jak pokazano poniżej:

Rozpoczynanie debugowania procedury składowanej w pozycji kursora SQL-żółty

rozpoczynając debugowanie procedury składowanej w SQL-yellow cursor position

teraz rozpocząłeś debugowanie, możesz przejść przez kod.

przechodzenie przez skrypt

istnieją trzy opcje, aby przejść przez kod: 1) krok nad, 2) Krok Do I 3) Krok Na Zewnątrz. Możesz zobaczyć te opcje, klikając Debuguj, jak pokazano na zrzucie ekranu poniżej:

debugowanie SQL Server-Step out

debugowanie SQL Server-Step out
  1. krok nad (F 10)

    krok nad po prostu przesuwa kursor do następnej linii wykonywalnego skryptu. Na przykład, jeśli debugger znajduje się w następującej lokalizacji w skrypcie:

    debugowanie SQL Server-krok przed

    SQL Server debugging - Step over-before

    kliknięcie kroku Over lub naciśnięcie F10 po prostu przesuwa kursor do następującej linii:

    debugowanie serwera SQL-krok po kroku

    debugowanie serwera SQL - krok po kroku-po
  2. Krok W (F 11)

    jest to jedna z najważniejszych i najbardziej przydatnych funkcji debugowania. Krok w pozwala włamać się do skryptu procedury składowanej ze skryptu, który wywołuje tę procedurę składowaną.

    ważne jest, aby wspomnieć, że Step Into działa jak Step Over. Jeżeli linia wykonywanego skryptu nie zawiera żadnego wywołania procedury składowanej w SQL serwerze.

    np. jeśli wejdziesz w:

    1
    SET @ upperrange = 20

    debugger po prostu przeniesie sterowanie do następnej linii:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    powyższa linia zawiera wywołanie procedury składowanej w SQL serwerze. Teraz, jeśli wejdziesz do tej linii skryptu, debugger przeniesie Cię do skryptu procedury składowanej 'spShowOddNumbers’, jak pokazano na poniższym rysunku.

    debugowanie serwera SQL-wejdź

    debugowanie SQL Server-krok w
  3. Step Out (Shift + F11)

    Step Out jest przeciwieństwem Step Into. Jeśli znajdujesz się wewnątrz procedury składowanej w SQL Server i chcesz wrócić do skryptu, który wywołuje procedurę składowaną, możesz użyć Step Out. Na przykład, jeśli klikniesz krok na:

    1
    WHILE (@LowerRange & lt; @UpperRange)

     SQL Server debugging-Step out

    debugowanie SQL Server-Step out

Uruchom kursor

Opcje debugowania wykonuj jedną linię naraz. Jeśli istnieje pętla lub długi fragment kodu, który chcesz, aby debugger pominął, możesz użyć opcji 'Uruchom do kursora’.

1
WHILE (@LowerRange < @ UpperRange)

na przykład, jeśli kursor znajduje się w następującym wierszu procedury składowanej w SQL Server i chcesz pominąć pętlę i przejść do instrukcji print po pętli. Możesz po prostu przejść do instrukcji drukowania i kliknąć „Uruchom do kursora”, jak pokazano poniżej:

 debugowanie serwera SQL-uruchom kursor

debugowanie serwera SQL-uruchom kursor

pętla zostanie pominięta, a twój kursor wskaże instrukcję print.

okno lokalne

okno lokalne pomaga śledzić wartości zmiennych w skrypcie. W tym przykładzie mamy dwie zmienne @LowerRange i @UpperRange w naszym skrypcie. Na początku pętli while w procedurze składowanej w SQL serwerze wartość zmiennej @ LowerRange wynosi 5, podczas gdy zmienna @UpperRange wynosi 20, Jak pokazano na poniższym rysunku:

debugowanie serwera SQL - okno lokalne

debugowanie serwera SQL - lokalne okno

po wykonaniu pętli, a następnie sprawdzeniu wartości zmiennych, zobaczysz, że zmienne @LowerRange i @UpperRange będą miały wartość 20. Okno Locals wyświetla nazwę, Wartość i typ zmiennej. Korzystanie z okna Locals sprawia, że bardzo łatwo można śledzić zmiany wartości zmiennych w miarę postępów w skrypcie.

jeśli przypadkowo zamkniesz okno Locals i chcesz je przywrócić, możesz po prostu przejść do debugowania -> Windows -> Locals, jak pokazano poniżej:

SQL Server debugging-Step over-zmienne lokalne

debugowanie serwera SQL-Step over-zmienne lokalne

okno Watch

okno Watch jest bardzo podobne do okna Locals. Jedyną różnicą jest to, że można dodawać lub usuwać zmienne z okna obserwuj, co może być przydatne podczas pracy z dużą liczbą zmiennych w większych skryptach.

aby dodać zmienną do okna zegarka, po prostu wybierz zmienną, kliknij prawym przyciskiem myszy, a następnie wybierz „Dodaj Zegarek”, jak pokazano na poniższym zrzucie ekranu:

debugowanie SQL Server w SSMS-dodawanie zegarka

debugowanie SQL Server w SSMS-dodawanie zegarka

podobnie, aby usunąć zmienną, kliknij prawym przyciskiem myszy nazwę zmiennej w oknie zegarka i kliknij „Usuń zegarek” z listy opcji. Jak pokazano poniżej:

debugowanie serwera SQL w SSMS-usuwanie zegarka

debugowanie serwera SQL w SSMS-usuwanie zegarka

stos wywołań

stos wywołań, jak sama nazwa wskazuje, wyświetla stos wywołań, które zostały wykonane do bieżącego punktu.

debugowanie serwera SQL w SSMS-stos wywołań

debugowanie serwera SQL w SSMS-stos wywołań

pierwsza linia stosu wywołań na rysunku powyżej mówi nam, że obecnie jest wykonywana procedura składowana spShowOddNumbers i w tej chwili debugger znajduje się w linii 14 pliku zawierającego tę procedurę składowaną. Druga linia wskazuje, że ta procedura składowana została wywołana ze skryptu w linii 7 sqlquery2.plik sql.

okno natychmiastowe

okno Natychmiastowe jest podobne do okna konsoli. Na przykład, można wykonywać operacje matematyczne w bezpośrednim oknie, sprawdzić wartości zmiennych, itd. Poniższy zrzut ekranu zawiera przykład okna natychmiastowego.

debugowanie serwera SQL w oknie SSMS-natychmiastowe

debugowanie serwera SQL w oknie SSMS-immediate

Uwaga: polecenie cls czyści okno immediate!

punkty przerwania

punkt przerwania jest jednym z najczęściej używanych narzędzi debugowania w dowolnym języku programowania. Punkt przerwania pozwala określić lokalizację, w której debugger ma przestać wykonywać kod. Są one szczególnie przydatne, gdy nie chcesz debugować wszystkich linii kodu, a chcesz sprawdzić stan zmiennych w określonych lokalizacjach w kodzie.

aby umieścić punkt przerwania w kodzie, po prostu kliknij prawym przyciskiem myszy szary obszar po lewej stronie wiersza skryptu, w którym chcesz umieścić swój punkt przerwania. Alternatywnie, naciśnięcie klawisza F9 spowoduje automatyczne dodanie punktu przerwania do linii. Ponowne naciśnięcie klawisza F9 spowoduje usunięcie punktu przerwania.

debugowanie serwera SQL w SSMS-Break points

debugowanie SQL Server w SSMS-Break points

na powyższym rysunku widać, że do wiersza wykonującego procedurę składowaną „spShowOddNumbers” w SQL Server został dodany punkt przerwania. Teraz Debuguj ten skrypt. Zobaczysz, że debugger rozpocznie się w pierwszej linii skryptu.

SQL Server debugging w SSMS-debugger rozpoczynający się w pierwszej linii skryptu

debugowanie serwera SQL w SSMS-debugger rozpoczynający się w pierwszej linii skryptu

Teraz naciśnij ALT + F5 lub przejdź ponownie do menu debugowania i kliknij Debug – > Kontynuuj. Zobaczysz, że zamiast debugowania następnej linii, debugger przeskoczy prosto do najbliższej linii z punktem przerwania.

debugowanie SQL Server w SSMS-dodawanie zegarka-wciśnij ALT + F5

debugowanie SQL Server w SSMS-dodawanie zegarka-naciśnij ALT + F5

możesz także tworzyć warunkowe punkty przerwania. Warunkowe punkty przerwania są osiągane tylko wtedy, gdy spełnione są określone warunki.

aby określić warunek punktu przerwania, po prostu kliknij go prawym przyciskiem myszy i wybierz „Warunki”, jak pokazano na poniższym rysunku:

debugowanie procedury składowanej SQL Server w Warunkach SSMS

debugowanie procedury składowanej SQL Server w SSMS-Conditions

otworzy się nowe okno, w którym można określić warunki, które mają być spełnione przed osiągnięciem punktu przerwania. Jeśli chcesz, aby ten punkt przerwania był trafiony tylko wtedy, gdy @LowerRange jest większy niż 15, możesz dodać ten warunek jako warunek, jak pokazano na poniższym obrazku:

debugowanie procedury składowanej SQL Server w SSMS - Ustawianie zmiennych dla warunku

wniosek

w tym artykule omówiliśmy, jakie różne opcje oferuje Microsoft SQL Server Management Studio do debugowania skryptu lub procedury składowanej w SQL Server.

inne świetne artykuły Bena

jak korzystać z wbudowanych funkcji SQL Server i tworzyć funkcje skalarne zdefiniowane przez użytkownika

Jak korzystać z funkcji okien

debugowanie procedur składowanych w SQL Server Management Studio (SSMS)

  • Autor
  • Ostatnie posty
Ben Richardson
Ben Richardson prowadzi szkolenia Acuity wiodący dostawca szkoleń SQL w Wielkiej Brytanii. Oferuje pełen zakres szkoleń SQL od kursów wprowadzających do zaawansowanej Administracji i szkolenia z hurtowni danych – zobacz tutaj, aby uzyskać więcej informacji – Acuity ma biura w Londynie i Guildford w Surrey. Bloguje od czasu do czasu na blogu Acuity
Zobacz wszystkie posty, których autorem jest Ben Richardson

Ben Richardson
najnowsze posty Ben Richardson (Zobacz wszystkie)
  • praca Z Power BI raport tematów-luty 25, 2021
  • Power BI: wykresy wodospad i połączone wizualizacje – styczeń 19, 2021
  • Power BI: Formatowanie warunkowe i kolory danych w akcji-styczeń 14, 2021