| Termin | Definicja |
|---|---|
| ERROR_MESSAGE() | ERROR_MESSAGE() to funkcja Transact-SQL zwracająca pełną treść komunikatu ostatnio wystąpionego błędu. ERROR_MESSAGE() w obsłudze błędów Transact-SQLERROR_MESSAGE() jest funkcją systemową języka Transact-SQL w Microsoft SQL Server. Zwraca pełną treść komunikatu błędu, który spowodował wejście do aktualnie wykonywanego bloku CATCH. Wynikiem funkcji jest wartość typu nvarchar(4000), dlatego komunikat może zawierać zarówno opis problemu, jak i informacje uzupełniające wygenerowane przez silnik bazy danych. Funkcja nie wymaga argumentów, więc wywołuje się ją jako Funkcja ma sens przede wszystkim wewnątrz konstrukcji Zakres informacji zwracanej przez funkcjęERROR_MESSAGE() zwraca sam tekst komunikatu, ale nie zastępuje pozostałych funkcji błędu dostępnych w SQL Server. Pełna diagnostyka często wymaga połączenia jej z ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_PROCEDURE() i ERROR_LINE(). ERROR_NUMBER() identyfikuje numer błędu, ERROR_SEVERITY() podaje poziom ważności, ERROR_STATE() wskazuje stan związany z miejscem wygenerowania błędu, ERROR_PROCEDURE() może zwrócić nazwę procedury lub wyzwalacza, a ERROR_LINE() numer wiersza, w którym wystąpił problem. Przykładowe pobranie danych może mieć postać: Treść komunikatu może zależeć od konkretnego błędu, instrukcji oraz obiektu, na którym wykonywana jest operacja. Przy naruszeniu ograniczenia unikatowości komunikat może wskazywać nazwę obiektu lub indeksu, natomiast przy błędzie konwersji może zawierać typy danych i fragment wartości powodującej problem. Z tego powodu tekst ERROR_MESSAGE() jest przydatny jako szczegółowy opis zdarzenia, lecz do klasyfikowania błędów należy zachować również jego numer i pozostałe atrybuty. Rejestrowanie i ponowne zgłaszanie błęduW praktycznej procedurze T-SQL sekcja CATCH może zapisać informacje o błędzie do tabeli diagnostycznej, zwrócić je aplikacji albo ponownie zgłosić wyjątek. Samo wyświetlenie ERROR_MESSAGE() nie naprawia transakcji ani nie cofa częściowo wykonanych zmian. Jeżeli procedura rozpoczęła transakcję, sposób postępowania trzeba określić osobno, na przykład sprawdzając Do ponownego zgłoszenia aktualnie obsługiwanego błędu służy instrukcja RAISERROR może generować komunikaty o określonym poziomie ważności i stanie, jednak w nowych rozwiązaniach opartych na TRY...CATCH instrukcja THROW jest przeznaczona do ponownego zgłaszania błędów bez utraty pierwotnego kontekstu. ERROR_MESSAGE() można wykorzystać do przygotowania wpisu w tabeli logów, lecz tekst komunikatu powinien być przechowywany razem z numerem błędu, nazwą procedury, numerem wiersza i identyfikatorem operacji. Pozwala to odróżnić powtarzalny błąd danych od problemu w kodzie procedury. Wykorzystanie ERROR_MESSAGE() przy naprawie komputera z SQL ServerW środowisku zainstalowanego Microsoft SQL Server komunikat ERROR_MESSAGE() może pomóc powiązać objaw widoczny w aplikacji z błędem zwróconym przez procedurę lub zapytanie Transact-SQL. Podczas analizy problemu należy ustalić, czy komunikat pochodzi z aktywnego CATCH, czy został wcześniej zapisany przez aplikację, ponieważ identyczny tekst może być prezentowany użytkownikowi po dodatkowym przetworzeniu. Istotne jest również sprawdzenie numeru błędu, instrukcji wywołującej oraz momentu wystąpienia wyjątku. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w przypadku problemów z aplikacją korzystającą z SQL Server analiza komunikatu może być jednym z elementów diagnostyki systemu. Sam tekst funkcji nie wskazuje automatycznie uszkodzenia dysku, pamięci RAM ani płyty głównej. Błąd może wynikać z nieprawidłowych danych, konfliktu typów, braku obiektu, naruszenia ograniczenia albo błędnej kolejności operacji w kodzie. Przy dokumentowaniu awarii warto zachować dokładną treść komunikatu, numer błędu, nazwę procedury i numer wiersza oraz odtworzyć kolejność czynności prowadzących do wyjątku. Taki zestaw danych ułatwia rozdzielenie problemu sprzętowego od błędu konfiguracji lub oprogramowania. ERROR_MESSAGE() dostarcza opisu słownego, ale prawidłowa diagnoza wymaga odniesienia go do konkretnej instrukcji T-SQL, stanu transakcji i zachowania całej aplikacji. |