Spróbuj złapać bloki na serwerze SQL

Spróbuj złapać bloki na serwerze SQL
Bez względu na to, jak doskonały kod próbuje być, zawsze istnieje szansa na błędy. Dlatego najlepiej wdrożyć środki obsługi błędów, aby złapać i poradzić sobie z błędami, zanim złamią funkcjonalność twoich aplikacji.

W tym przewodniku dowiesz się, jak wdrożyć obsługę błędów w SQL Server za pomocą bloków Try i Catch.

Jeśli chcesz dowiedzieć się, jak generować komunikaty o błędach zdefiniowanych przez użytkownika, sprawdź nasz samouczek w samouczku SQL Server Raiserror.

Wstęp

Próba i łapanie bloków na serwerze SQL pozwala przewidzieć i łaskawie obsługiwać błędy, które mogą wystąpić w zapytaniach SQL.

Najpierw załącz zapytania SQL, które mogą powodować błędy w bloku próbnym. Następnie możesz dodać blok połowowy po podniesieniu wyjątku.

Składnia dla bloku próbnego jest jak pokazano:

zacznij próbować
-- Spróbuj uruchomić te stwierdzenia
Koniec spróbować;

Po bloku próbnym możesz ustawić blok połowowy, który następuje po podobnej składni, jak pokazano:

Zacznij złapać
-- Złap oświadczenia
końcowy haczyk

Najpierw serwer SQL będzie próbował uruchomić kod wewnątrz bloku próbowania. Jeśli nie wystąpi błąd/wyjątek, pomija blok połowowy i przechodzi wraz z wykonaniem.

Jeśli jednak błąd wystąpi wewnątrz bloku próbnego, wykonanie przeskakuje wewnątrz połowu i wykonuje kod w tym bloku.

Składnia dla pełnego bloku prób/catch jest jak pokazano:

zacznij próbować
-- próbuj mnie uruchomić
endtry
Zacznij złapać
-- Uruchom meiferrorintry
Endcatch;

Możesz zaimplementować środki obsługi podniesionego błędu wewnątrz bloku połowowego, takich jak wyświetlanie wiadomości za pomocą instrukcji Raiserror i Druku. Pamiętaj, że komunikat o błędzie wewnątrz bloku połowowego nie jest zwracany do aplikacji, chyba że przy użyciu mechanizmów, takich jak instrukcja wyboru.

Możesz użyć specjalnych funkcji, aby uzyskać szczegółowe informacje na temat błędu:

  1. Error_number () - Zwraca wewnętrzną identyfikator komunikatu dla błędu.
  2. Error_severity () - pokazuje poziom nasilenia błędu. Wartość od 0 do 25 przy wyższym nasileniu wskazuje wysoki poziom nasilenia. Zwróć uwagę, że wartość nasilenia 20–25 jest śmiertelna.
  3. Error_state - stan komunikatu o błędzie. Wartość od 0 do 255.
  4. ERROR_MESSAGE - opisowy komunikat błędu, który wystąpił.
  5. ERROR_PROCEDURE () - pokazuje nazwę funkcji, spustu lub procedury przechowywanej, w której błąd został podniesiony.

Upewnij się, aby używać poprzednich funkcji w bloku połowowym; W przeciwnym razie zwrócą wartość zerową.

SQL SERVER TRYP/CATK

Użyjmy podziału przez błąd zerowy, aby zilustrować, jak korzystać z bloku try/catch. Zacznij od utworzenia procedury, jak pokazano w następujących zapytaniach:

-- Uzyskaj informacje o błędach
createProceDuteget_errorinfo
Jak
SelectError_Number () Aserrornumber,
Error_severity () asseverity,
Error_state () aserrorstate,
ERROR_PROCEDURE () ASERRORPROCEDURE,
Error_message () aserrrormessage,
Error_line () aserrorline
początek
-- Dividebyzeroerror
Wybierz 1/0;
endtry
Zacznij złapać
-- Uruchom ProcedureTogeterRorInfo
execget_errorinfo;
końcowy haczyk;

W powyższym przykładzie tworzymy procedurę składowaną w celu pobrania informacji o błędach. Następnie podnosimy błąd, nurkując o zero.

Jeśli uruchomimy powyższe zapytanie, powinniśmy uzyskać wyjście jako:

Co się stanie, jeśli nie ma błędu w bloku połowowym, jak pokazano:

początek
-- żaden błąd
Select100/5AsResult;
endtry
Zacznij złapać
-- Uruchom ProcedureTogeterRorInfo
execget_errorinfo;
Endcatch;

Ponieważ w bloku próbnym nie ma błędu, SQL Server pomija bloki połowowe i zwraca wynik. Przykładowym wynikiem jest to, jak pokazano:

Wniosek

Ten przewodnik obejmował implementację i korzystanie z obsługi błędów w serwerze SQL za pomocą bloków TRY/CATH. Ponadto wyjaśniono specjalne funkcje i dostarczono w celu pobrania szczegółowych informacji o błędach. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź więcej artykułów z podpowiedzi Linux, aby uzyskać wskazówki i informacje na temat serwerów SQL.