Udostępnij za pośrednictwem


Informacje o błędach aparatu bazy danych

Dotyczy:programu SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)punkt końcowy analizy SQL w usłudze Microsoft FabricWarehouse w usłudze Microsoft Fabric

Błędy zgłaszane przez aparat bazy danych programu Microsoft SQL Server mają atrybuty opisane w poniższej tabeli.

Atrybut Opis
Numer błędu Każdy komunikat o błędzie ma unikatowy numer błędu.
Ciąg komunikatu o błędzie Komunikat o błędzie zawiera informacje diagnostyczne o przyczynie błędu. Wiele komunikatów o błędach zawiera zmienne podstawienia, w których są wstawione informacje, takie jak nazwa obiektu generującego błąd.
Dotkliwość Ważność wskazuje, jak poważny jest błąd. Błędy o niskiej ważności, takie jak 1 lub 2, to komunikaty informacyjne lub ostrzeżenia niskiego poziomu. Błędy o wysokiej ważności wskazują problemy, które należy rozwiązać tak szybko, jak to możliwe. Aby uzyskać więcej informacji na temat kategorii, zobacz Kategorie błędów silnika bazy danych.
Stan Niektóre komunikaty o błędach można zgłaszać w wielu punktach w kodzie silnika bazy danych. Na przykład błąd 1105 może zostać zgłoszony dla kilku różnych warunków. Każdy konkretny warunek, który zgłasza błąd, przypisuje unikatowy kod stanu.

Podczas przeglądania baz danych zawierających informacje o znanych problemach, takich jak baza wiedzy Microsoft Knowledge Base, można użyć numeru stanu, aby określić, czy zarejestrowany problem jest taki sam jak napotkany błąd. Jeśli na przykład artykuł bazy wiedzy opisuje błąd 1105 o stanie 2, a otrzymany komunikat o błędzie 1105 miał stan 3, błąd prawdopodobnie ma inną przyczynę niż zgłoszony w artykule.

Inżynier pomocy technicznej firmy Microsoft może również użyć kodu stanu z błędu, aby znaleźć lokalizację w kodzie źródłowym, w którym jest zgłaszany ten kod błędu. Te informacje mogą zawierać dodatkowe pomysły dotyczące diagnozowania problemu.
Nazwa procedury To nazwa procedury składowanej lub wyzwalacza, w którym wystąpił błąd.
Numer linii Wskazuje, która instrukcja w partii zadań, procedurze składowanej, wyzwalaczu lub funkcji wygenerowała błąd.

Wszystkie komunikaty o błędach zdefiniowane przez użytkownika i system w wystąpieniu Silnika Bazy Danych znajdują się w widoku katalogu sys.messages. Możesz użyć instrukcji RAISERROR, aby zwrócić do aplikacji błędy zdefiniowane przez użytkownika.

Wszystkie interfejsy API bazy danych, takie jak przestrzeń nazw Microsoft .NET Framework SQLClient, obiekty danych ActiveX (ADO), OLE DB i Open Database Connectivity (ODBC), zgłaszają podstawowe atrybuty błędów. Te informacje zawierają numer błędu i ciąg komunikatu. Jednak nie wszystkie interfejsy API zgłaszają wszystkie inne atrybuty błędu.

Informacje o błędzie występującym w zakresie bloku TRY...CATCH można uzyskać w kodzie Transact-SQL, używając funkcji takich jak ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY i ERROR_STATE w zakresie skojarzonego bloku CATCH. Aby uzyskać więcej informacji, zobacz TRY... CATCH (Transact-SQL).

Przykłady

Poniższy przykład wysyła zapytanie do widoku katalogu sys.messages w celu zwrócenia listy wszystkich komunikatów o błędach zdefiniowanych przez system i użytkownika w aparacie bazy danych, które mają tekst w języku angielskim (1033).

SELECT  
    message_id,  
    language_id,  
    severity,  
    is_event_logged,  
    text  
  FROM sys.messages  
  WHERE language_id = 1033;  

Aby uzyskać więcej informacji, zobacz sys.messages (Transact-SQL).

Zobacz też

sys.messages (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
TRY... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
BŁĄD_PROCEDURY (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)