SQLGetDiagRec zwraca natywny kod błędu. Czy jest gdziekolwiek przegląd kodów błędów SQL Server 2012? Nie mogłem znaleźć niczego na MSDN.Czy istnieje przegląd wszystkich kodów błędów programu SQL Server 2012?
Odpowiedz
use master
select * from sysmessages
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
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
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.
znalazłem kody do MS SQL Server 2008 R2, ale większość z nich są prawdziwe w odniesieniu do późniejszych wersjach: http://technet.microsoft.com/en-us/library/cc645603(v=sql.105).aspx
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
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
https://technet.microsoft.com/en-us/library/cc645603(v=sql.105). aspx –