Udostępnij za pośrednictwem


Obsługa błędów i komunikatów w aplikacjach

Błędy wywoływane przez Aparat baz danych programu SQL Server lub instrukcja RAISERROR nie jest częścią zestaw wyników.Błędy są zwracane do aplikacji za pośrednictwem mechanizmu obsługi błędów, oddzielonym od przetwarzania zestawów wyników.

Każda baza danych interfejs programowania aplikacji (API) ma zestaw funkcji, interfejsy, metod, obiektów i struktur, które zwracają one błędy i komunikaty.Każdy interfejs API funkcja lub metoda zwykle zwraca kod stanu wskazujący powodzenia operacji.Jeśli stan jest inny niż sukces, aplikacja może wywołać funkcji błędu, metody lub obiekty do pobierania informacji o błędzie.

Aparat baz danych Można zwrócić informacji do rozmówcy na dwa sposoby:

  1. Błędy

    • Błędy z sys.messages z ważności 11 lub wyższym.

    • Instrukcja RAISERROR, każdy z ważności 11 lub wyższym.

  2. Wiadomości

    • Dane wyjściowe instrukcja wydruku.

    • Dane wyjściowe kilku instrukcji DBCC.

    • Błędy z sys.messages z ważności 10 lub niższej.

    • Wszelkie instrukcja RAISERROR z ważności 10 lub niższej.

Aplikacje przy użyciu interfejsów API, takich jak obiektów ActiveX Data Objects (ADO) i OLE DB ogólnie nie rozróżnia błędów i komunikatów.W aplikacji Open Database Connectivity (ODBC) wiadomości generują wartość SQL_SUCCESS_WITH_INFO kod zwrotny funkcja i błędy zwykle Generuj kod zwrotny wartość SQL_ERROR.Różnica jest wyraźniejsze w bibliotece DB, w którym błędy są zwracane do aplikacji funkcja obsługi błędów i komunikatów są zwracane do aplikacji funkcja obsługi wiadomości.Podobnie gdy korzystanie z dostawca SqlClient błędy powodują zgłoszony; wyjątek SqlException wiadomości nie zmienia przepływ sterowania i mogą zostać przechwycone przez kod aplikacji rejestracja wywołanie zwrotne InfoMessage obsługa zdarzeń.

Inne składniki można również podnieść błędów:

  • Dostawca OLE DB for SQL Server dostawcy i SQL Server sterownik ODBC podnieść swoje własne błędy.Format tych błędów jest zgodne z formaty zdefiniowane w specyfikacji interfejsu API.

  • Biblioteki Net podnieść swoje własne błędy.

  • API rozszerzone procedury przechowywane podnosi błędy w jego własnym formacie.

  • SQL Server Kreatorów, aplikacji i narzędzi, takich jak SQL Server Management Studio i sqlcmd , narzędzie można podnieść swoje własne błędy.

Błędy z tych składników są zwracane do aplikacji wywołującej, przy użyciu tego samego mechanizmu podstawowe jako błędy z Aparat baz danych.Aplikacja może przetwarzać te błędy za pomocą tej samej logiki obsługi błędów jest używana do Aparat baz danych błędy.Ponieważ te błędy są wywoływane poza Aparat baz danych, nie mogą być przetwarzane w Transact-SQL TRY…POŁÓW konstrukcje.Aby uzyskać więcej informacji, zobacz TRY...CATCH (Transact-SQL).

Obsługa błędów ODBC

Specyfikacja ODBC wprowadzone błąd modelu, które służyły za podstawę modeli błąd rodzajowy API, takich jak ADO i OLE DB, bazy danych i interfejsów API zbudowany za pośrednictwem ODBC — podstawowych RDO, obiektów DAO (Data Access) oraz Microsoft Foundation Classes (MFC) bazy danych klasy.Dotyczy to także SQL Server sterownik ODBC macierzystym klienta.W modelu ODBC błędy mają następujące atrybuty:

  • SQLSTATE

    SQLSTATE jest kodem błędu pięciu znaków zdefiniowanych początkowo w specyfikacji ODBC.Kody SQLSTATE są wspólne dla całej wszystkie sterowniki ODBC i umożliwiają aplikacjom kod podstawowe obsługa błędów bez badania wszystkie kody różnych błędów zwracanych przez różnych baz danych.ODBC SQLSTATE nie ma nic wspólnego z atrybut Państwo Aparat baz danych komunikatów o błędzie.

    ODBC 2.x zwraca jeden zestaw kodów SQLSTATE i ODBC 3.x zwraca zestaw kodów SQLSTATE wyrównana do otwartego zarządzania danymi grupy: Structured Query Language(SQL) w wersja 2 standardowych.Ponieważ wszystkie sterowniki ODBC zwraca samej zestawów kodów SQLSTATE, aplikacje oparcie ich obsługa błędów na SQLSTATE kody przenośną.

  • Numer błąd macierzysty

    Liczba błąd macierzysty jest numer błędu z bazy danych.Aplikacje ODBC odbierać Aparat baz danych Błąd liczby jako liczby błąd macierzysty.

  • Ciąg komunikatu o błędzie

    Komunikat o błędzie jest zwracany w parametr ciąg komunikat o błędzie.

Gdy funkcja ODBC zwraca stan innych niż SQL_SUCCESS, aplikacja może wywołać SQLGetDiagRec uzyskać informacje o błędzie.Na przykład, jeśli błąd składni aplikacji ODBC (SQL Server numer błędu 170), SQLGetDiagRec zwraca następujące.

szSqlState = 42000, pfNative = 170
szErrorMsg =
'[Microsoft][ODBC SQL Server Driver][SQL Server]
                                     Line 1: Incorrect syntax near *'

ODBC SQLGetDiagField funkcja umożliwia sterowników ODBC określenie specyficznych dla sterownika pól diagnostycznych w diagnostyczne rekordów zwracanych przez sterownik. SQL Server Sterownik ODBC określa specyficzne dla sterownika pola do przechowywania Aparat baz danych informacje o błędach, takich jak Aparat baz danych ważności i kody stanu.

Aby uzyskać więcej informacji na temat pobierania komunikaty o błędach w aplikacji ODBC, zobacz Obsługa błędów i komunikatów.

Obsługa błędów ADO

Obiekty ADO wykorzystują błędy obiektów i kolekcja errors zwraca błąd standardowy informacje, takie jak SQLSTATE, numer błędu macierzystych i ciąg komunikatu o błędzie.Te są takie same, jak ich odpowiedniki ODBC.ADO nie obsługuje żadnych interfejsów błędu specyficzny dla dostawca; Aparat baz danych-informacje błędu, takie jak wskaźnik ważności lub Państwa, nie jest dostępne aplikacje ADO.

Aby uzyskać więcej informacji na temat komunikatów o błędach w aplikacjach ADO pobierania, zobacz Obsługa błędów i komunikatów.

Obsługa błędów DB OLE

OLE DB używa IErrorInfo interfejs zwraca błąd standardowy informacji, takich jak SQLSTATE, numer błędu macierzystych i ciąg błędu.Te są takie same, jak ich odpowiedniki ODBC.Dostawca OLE DB dla SQL Server definiuje ISQLServerErrorInfo interfejs zwraca Aparat baz danych-określonych informacji, takich jak wskaźnik ważności, Państwo, procedura nazwę i numer wiersza.

Aby uzyskać więcej informacji na temat pobierania komunikaty o błędach w aplikacji OLE DB, zobacz Błędy.

Obsługa błędów SqlClient

Dostawca zarządzany SqlClient zgłasza wyjątek SqlException, gdy nieobsługiwany błąd jest wywoływane przez Aparat baz danych programu SQL Server.Za pomocą klasy SqlException aplikacje można pobrać informacji o błędach wyprodukowanych po stronie serwera, w tym numer błędu, komunikat o błędzie, Waga błędu i inne informacje kontekstowe wyjątek.

Przetwarzanie ostrzeżenia lub komunikaty informacyjne przesyłane przez Aparat baz danych programu SQL Server, aplikacje można utworzyć SqlInfoMessagezdarzenieobsługi pełnomocnika do nasłuchiwania InfoMessage zdarzenie na klasy SqlConnectionPodobnie jak przypadek wyjątku, informacje kontekstu wiadomości, takie jak ważności i stanu są przekazywane jako argumenty wywołanie zwrotne.