Przewodnik krok po kroku dotyczący używania TRY/CATCH do obsługi błędów programu SQL Server

Identyfikuj błędy bez przerywania wykonywania

Zabawkowy znak ostrzegawczy otoczony innymi różnymi drogowymi znakami ostrzegawczymi

Larry Washburn / Getty Images





Instrukcja TRY/CATCH w Transact-SQL wykrywa i obsługuje warunki błędów w aplikacjach bazodanowych. To stwierdzenie jest kamieniem węgielnym SQL Obsługa błędów serwera i jest ważnym elementem tworzenia niezawodnych aplikacji bazodanowych.

TRY/CATCH dotyczy SQL Server począwszy od 2008, Azure SQL Database, Azure SQL Data Warehouse i Parallel Data Warehouse.



Przedstawiamy TRY/CATCH

TRY./CATCH działa przez określenie dwóch instrukcji Transact-SQL: jednej, którą chcesz „wypróbować”, a drugiej do „wyłapania” wszelkich błędów, które mogą się pojawić. Gdy SQL Server napotka instrukcję TRY/CATCH, natychmiast wykonuje instrukcję zawartą w klauzuli TRY. Jeśli instrukcja TRY zostanie wykonana pomyślnie, program SQL Server przejdzie dalej. Jeśli jednak instrukcja TRY wygeneruje błąd, SQL Server wykona instrukcję CATCH, aby poprawnie obsłużyć błąd.

Podstawowa składnia ma następującą postać:



|_+_|

TRY/CATCH Przykład

Rozważmy bazę danych zasobów ludzkich, która zawiera tabelę o nazwie pracownicy , który zawiera informacje o każdym z pracowników firmy. Ta tabela używa numeru identyfikacyjnego pracownika jako klucza podstawowego.

Możesz spróbować użyć poniższego oświadczenia, aby wstawić nowego pracownika do swojej bazy danych:

|_+_| |_+_|

W tym przykładzie wszelkie występujące błędy są zgłaszane zarówno użytkownikowi wykonującemu polecenie, jak i adresowi e-mail hr@foo.com. Błąd wyświetlany użytkownikowi to:

ROZPOCZNIJ PRÓBĘ 

INSERT INTO pracowników (id, imię, nazwisko, rozszerzenie)
VALUES(12497, 'Mike', 'Chapple', 4201)END TRYBEGIN CATCHPRINT 'BŁĄD:' + ERROR_MESSAGE( );EXEC msdb.dbo.sp_send_dbmail@profile_name = 'Poczta pracownika',@recipients = 'hr@foo.com' ,@body = 'Wystąpił błąd podczas tworzenia nowego rekordu pracownika.',@subject = 'Błąd bazy danych pracownika' ;KONIEC CATCH

Wykonywanie aplikacji jest kontynuowane normalnie, umożliwiając programiście obsługę błędu. Użycie instrukcji TRY/CATCH to elegancki sposób na proaktywne wykrywanie i obsługę błędów występujących w aplikacjach bazodanowych SQL Server.



Uczyć się więcej

Aby dowiedzieć się więcej o języku zapytań strukturalnych, zapoznaj się z naszym artykułem Podstawy SQL .