Udostępnij za pomocą


Ważność błędów silnika bazy danych

Dotyczy:SQL Server

Gdy aparat bazy danych programu SQL Server zgłasza błąd, ważność błędu wskazuje typ problemu napotkanego przez program SQL Server.

Poziomy ważności

W poniższej tabeli wymieniono i opisano poziomy ważności błędów zgłaszanych przez aparat bazy danych programu SQL Server.

Poziom ważności Description
0-9 Wskazuje komunikaty informacyjne, które zwracają informacje o stanie lub zgłaszają błędy, które nie są poważne. Aparat bazy danych nie zgłasza błędów systemowych o ważności od 0 do 9.
10 Wskazuje komunikaty informacyjne, które zwracają informacje o stanie lub zgłaszają błędy, które nie są poważne. Ze względów zgodności aparat bazy danych konwertuje ważność 10 na ważność 0 przed zwróceniem informacji o błędzie do aplikacji wywołującej.
11-16 Wskaż błędy, które mogą zostać skorygowane przez użytkownika.
11 Wskazuje, że dany obiekt lub jednostka nie istnieje.
12 Specjalna ważność zapytań, które nie używają blokady z powodu specjalnych wskazówek dotyczących zapytań. W niektórych przypadkach operacje odczytu wykonywane przez te instrukcje mogą spowodować niespójne dane, ponieważ blokady nie są podejmowane w celu zagwarantowania spójności.
13 Wskazuje błędy zakleszczenia transakcji.
14 Wskazuje błędy związane z zabezpieczeniami, takie jak odmowa uprawnień.
15 Wskazuje błędy składni w poleceniu Transact-SQL.
16 Wskazuje ogólne błędy, które mogą być poprawiane przez użytkownika.
17-19 Wskaż błędy oprogramowania, których nie można poprawić przez użytkownika. Poinformuj administratora systemu o problemie.
17 Wskazuje, że instrukcja spowodowała, że program SQL Server zabraknie zasobów (takich jak pamięć, blokady lub miejsce na dysku dla bazy danych) lub przekroczenie limitu określonego przez administratora systemu.
18 Wskazuje problem w oprogramowaniu aparatu bazy danych, ale instrukcja zostanie ukończona, a połączenie z wystąpieniem aparatu bazy danych jest utrzymywane. Administrator systemu powinien być informowany za każdym razem, gdy wystąpi komunikat o poziomie ważności 18.
19 Wskazuje, że przekroczono niekonfigurowalny limit aparatu bazy danych, a bieżący proces wsadowy został zakończony. Komunikaty o błędach z poziomem ważności 19 lub wyższym zatrzymają wykonywanie bieżącej partii. Błędy poziomu ważności 19 są rzadkie i muszą zostać skorygowane przez administratora systemu lub podstawowego dostawcę pomocy technicznej. Skontaktuj się z administratorem systemu, gdy zostanie zgłoszony komunikat o poziomie ważności 19. Komunikaty o błędach z poziomem ważności od 19 do 25 są zapisywane w dzienniku błędów.
20-24 Wskaż problemy systemowe i są błędami krytycznymi, co oznacza, że zadanie aparatu bazy danych, na którym uruchomiono instrukcję lub partię, nie jest już uruchomione. Zadanie rejestruje informacje o tym, co miało miejsce, a następnie kończy działanie. W większości przypadków połączenie aplikacji z wystąpieniem aparatu bazy danych może również zakończyć się. Jeśli tak, w zależności od problemu, aplikacja może nie być w stanie ponownie nawiązać połączenia.

Komunikaty o błędach w tym zakresie mogą mieć wpływ na wszystkie procesy uzyskiwania dostępu do danych w bazie danych i mogą wskazywać, że baza danych lub obiekt jest uszkodzona. Komunikaty o błędach z poziomem ważności od 19 do 24 są zapisywane w dzienniku błędów.
20 Wskazuje, że instrukcja napotkała problem. Ponieważ problem dotyczył tylko bieżącego zadania, prawdopodobnie sama baza danych nie jest uszkodzona.
dwadzieścia jeden Wskazuje, że wystąpił problem, który ma wpływ na wszystkie zadania w bieżącej bazie danych, ale prawdopodobnie sama baza danych nie jest uszkodzona.
22 Wskazuje, że tabela lub indeks określony w komunikacie został uszkodzony przez problem z oprogramowaniem lub sprzętem.

Rzadko występują błędy poziomu ważności 22. W takim przypadku uruchom polecenie DBCC CHECKDB , aby określić, czy inne obiekty w bazie danych również są uszkodzone. Problem może znajdować się tylko w pamięci podręcznej buforu, a nie na samym dysku. Jeśli tak, ponowne uruchomienie wystąpienia aparatu bazy danych rozwiąza problem. Aby kontynuować pracę, należy ponownie nawiązać połączenie z wystąpieniem aparatu bazy danych. W przeciwnym razie użyj polecenia DBCC , aby rozwiązać problem. W niektórych przypadkach może być konieczne przywrócenie bazy danych.

Jeśli ponowne uruchomienie wystąpienia aparatu bazy danych nie poprawi problemu, problem występuje na dysku. Czasami niszczenie obiektu określonego w komunikacie o błędzie rozwiązuje problem. Jeśli na przykład komunikat zgłasza, że wystąpienie aparatu bazy danych znalazło wiersz o długości 0 w indeksie nieklastrowanym, usuń indeks i ponownie skompiluj go.
23 Wskazuje, że integralność całej bazy danych jest kwestionowana z powodu problemu ze sprzętem lub oprogramowaniem.

Rzadko występują błędy poziomu ważności 23. W takim przypadku uruchom polecenie DBCC CHECKDB , aby określić zakres uszkodzeń. Problem może znajdować się tylko w pamięci podręcznej, a nie na samym dysku. Jeśli tak, ponowne uruchomienie wystąpienia aparatu bazy danych rozwiąza problem. Aby kontynuować pracę, należy ponownie nawiązać połączenie z wystąpieniem aparatu bazy danych. W przeciwnym razie użyj polecenia DBCC , aby rozwiązać problem. W niektórych przypadkach może być konieczne przywrócenie bazy danych.
24 Wskazuje błąd nośnika. Administrator systemu może wymagać przywrócenia bazy danych. Może być również konieczne wywołanie dostawcy sprzętu.

Ważność komunikatu o błędzie zdefiniowanego przez użytkownika

Możesz użyć sp_addmessage polecenia , aby dodać komunikaty o błędach zdefiniowane przez użytkownika z ważnościami od 1 do 25 do sys.messages widoku wykazu. Te komunikaty o błędach zdefiniowane przez użytkownika mogą być używane przez RAISERRORprogram . Aby uzyskać więcej informacji, zobacz sp_addmessage.

RAISERROR Może służyć do generowania komunikatów o błędach zdefiniowanych przez użytkownika z ważnościami od 1 do 25. RAISERROR może odwoływać się do komunikatu o błędzie zdefiniowanego przez użytkownika przechowywanego sys.messages w widoku wykazu lub dynamicznie tworzyć komunikat. Jeśli RAISERROR podczas generowania błędu jest używany komunikat sys.messages o błędzie zdefiniowany przez użytkownika, ważność określona przez RAISERROR zastąpi ważność określoną w pliku sys.messages. Aby uzyskać więcej informacji, zobacz RAISERROR.

Ważność błędu i TRY... ŁAPAĆ

Konstrukcja TRY...CATCH przechwytuje wszystkie błędy wykonywania o ważności większej niż 10, które nie kończą połączenia z bazą danych.

Błędy o ważności od 0 do 10 to komunikaty informacyjne i nie powodują skoku TRY...CATCH wykonywania z CATCH bloku konstrukcji.

Błędy, które kończą połączenie z bazą danych, zwykle z ważnością od 20 do 25, nie są obsługiwane przez blok, ponieważ wykonywanie jest przerywane po zakończeniu CATCH połączenia.

Aby uzyskać więcej informacji, zobacz TRY... CATCH.

Pobieranie ważności błędu

Funkcja ERROR_SEVERITY systemowa może służyć do pobierania ważności błędu, który spowodował CATCH uruchomienie bloku TRY...CATCH konstrukcji. ERROR_SEVERITY Metoda zwraca NULL wartość , jeśli jest wywoływana poza zakresem CATCH bloku. Aby uzyskać więcej informacji, zobacz ERROR_SEVERITY.