2012-11-27 5 views

Odpowiedz

18
use master 
select * from sysmessages 
+0

Wyszukiwanie w bazie danych, aby uzyskać wiadomość, nie jest tak naprawdę opcją. Może baza danych nie jest już dostępna. Tak naprawdę potrzebuję listy kodów błędów, które mogę obsłużyć w kodzie. – Antineutrino

+0

Lista komunikatów o błędach w bazie danych jest listą statyczną. Możesz wykonać zapytanie na instalacji programu SQL Server, aby wyświetlić pełną listę kodów błędów i powiązanych wiadomości. Możesz użyć identyfikatorów message_ids z tej listy w kodzie do obsługi, jak chcesz. – Travis

3

Nie mogę znaleźć listy poszczególnych kodów w Internecie. Jednak znalazłem listę poziomów ważności here na MSDN. Są one następujące:

poziom dotkliwości/Opis

  • 0-9: Komunikaty informacyjne, które zwracają informacje o stanie lub zgłaszać błędów, które nie są ciężkie. Aparat baz danych nie generuje błędów systemowych o wartościach od 0 do 9.
  • 10: Komunikaty informacyjne , które zwracają informacje o stanie lub błędy raportu, które nie są poważne. Ze względu na kompatybilność aparat bazy danych konwertuje ważność 10 na poziom ważności 0 przed zwróceniem informacji o błędzie do aplikacji wywołującej .
  • 11-16: Wskaż błędy, które mogą zostać naprawione przez użytkownika .
  • 11: Wskazuje, że dany obiekt lub jednostka nie istnieje.
  • 12: Specjalna ważność dla zapytań, które nie korzystają z blokowania ze względu na specjalne wskazówki dotyczące zapytań . W niektórych przypadkach operacje odczytu wykonywane przez mogą powodować niespójne dane, ponieważ blokady nie są wykonywane w celu zagwarantowania spójności.
  • 13: Wskazuje transakcje błędów impasu.
  • 14: Wskazuje, że błędy związane z bezpieczeństwem, takie jak odmowa dostępu, zostały zablokowane na .
  • 15: Wskazuje błędy składniowe w poleceniu Transact-SQL .
  • 16: Wskazuje błędy ogólne, które może naprawić użytkownik .
  • 17-19: Wskaż błędy oprogramowania, które nie mogą zostać naprawione przez użytkownika . Poinformuj administratora systemu o problemie.
  • 17: Oznacza , że instrukcja SQL Server spowodowała wyczerpanie zasobów (takich jak pamięć, blokady lub miejsce na dysku dla bazy danych) lub przekroczenie pewnego limitu o ustawionego przez administratora systemu.
  • 18: Wskazuje problem w oprogramowaniu bazy danych aparatu , ale instrukcja kończy wykonywanie, a połączenie z instancją aparatu bazy danych jest zachowane. Administrator systemu powinien być informowany za każdym razem, gdy pojawi się komunikat o numerze o poziomie istotności 18.
  • 19: Wskazuje, że został przekroczony niefigurowalny limit bazy danych , a bieżący proces wsadowy został zakończony. Komunikaty o błędach o poziomie ważności 19 lub wyższe zatrzymują wykonywanie bieżącej partii. Błędy o poziomie istotności 19 są rzadkie i muszą zostać poprawione przez administratora systemu lub przez głównego dostawcę pomocy technicznej . Skontaktuj się z administratorem systemu, gdy zostanie podniesiony komunikat o poziomie ważności 19.Komunikaty o błędach o poziomie istotności od 19 do 25 są zapisywane w dzienniku błędów.
  • 20-24: Wskazuje problemy systemowe i oznacza błędy krytyczne, co oznacza, że ​​zadanie Aparat bazy danych, który wykonuje instrukcję lub pakiet , już nie działa. Zadanie rejestruje informacje o tym, co się stało i kończy. W większości przypadków połączenie aplikacji z aparatem bazy danych może również zostać zakończone. Jeśli tak się stanie, w zależności od problemu aplikacja może nie być w stanie ponownie nawiązać połączenia z numerem . Komunikaty o błędach w tym zakresie mogą wpływać na wszystkie procesy uzyskujące dostęp do danych w tej samej bazie danych i mogą wskazywać, że baza danych lub obiekt jest uszkodzony. Komunikaty o błędach o poziomie poważności poziom od 19 do 24 są zapisywane w dzienniku błędów.
  • 20: Oznacza , że instrukcja napotkała problem. Ponieważ problem ma tylko wpływa tylko na bieżące zadanie, jest mało prawdopodobne, że sama baza danych została uszkodzona.
  • 21: Wskazuje, że napotkano problem, który dotyczy wszystkich zadań w bieżącej bazie danych, ale jest mało prawdopodobne, że sama baza danych została uszkodzona.
  • 22: Oznacza , że tabela lub indeks określony w komunikacie został uszkodzony przez problem z oprogramowaniem lub sprzętem. Błędy 22 poziomu błędu występują rzadko. Jeśli wystąpi, uruchom DBCC CHECKDB, aby ustalić, czy inne obiekty z bazy danych są uszkodzone. Problem może być tylko w pamięci podręcznej bufora , a nie na samym dysku. Jeśli tak, zrestartowanie instancji aparatu bazy danych rozwiązuje problem. Aby kontynuować działanie, należy ponownie połączyć się z instancją aparatu bazy danych; w przeciwnym razie użyj DBCC, aby naprawić problem. W niektórych przypadkach konieczne może być odtworzenie bazy danych za pomocą . Jeśli ponowne uruchomienie instancji aparatu baz danych nie rozwiąże problemu, problem dotyczy dysku . Czasami zniszczenie obiektu określonego w komunikacie o błędzie może rozwiązać problem. Na przykład, jeśli komunikat zgłasza , że instancja aparatu bazy danych wykrył wiersz o długości w indeksie nieklastrowanym, usuń indeks i przebuduj go.
  • 23: Wskazuje, że integralność całej bazy danych jest w numerze z powodu problemu ze sprzętem lub oprogramowaniem. Poziom istotności 23 błędy występują rzadko. Jeśli tak się stanie, uruchom DBCC CHECKDB, aby określić zasięg obrażeń zadany . Problem może znajdować się tylko w pamięci podręcznej, a nie na samym dysku. Jeśli tak, ponowne uruchomienie instancji Database Engine rozwiązuje problem. Aby kontynuować pracę, należy ponownie podłączyć do instancji aparatu bazy danych; w przeciwnym razie użyj DBCC, aby naprawić problem z . W niektórych przypadkach może być konieczne przywrócenie bazy danych.
  • 24: Wskazuje uszkodzenie nośnika. Administrator systemu może wymagać odtworzenia bazy danych w trybie . Możesz również zadzwonić do swojego dostawcy sprzętu.
3

Ja również poszukuje liście siebie i okazało się, że można je zobaczyć wszystko z DB pana przez uruchomieniem tego komunikatu:

SELECT * FROM sysmessages 
0

w SQL Server 2005 i powyżej można użyć to:

SELECT * FROM sys.messages 

Jak wspominają inni, można również użyć (dostępne w SQL Server 2000):

SELECT * FROM sysmessages