| Termin | Definicja |
|---|---|
| Funkcja ERROR_NUMBER() | Funkcja ERROR_NUMBER() zwraca numeryczny kod ostatnio wystąpionego błędu. Kod błędu jako liczba, nie jako opisERROR_NUMBER to funkcja systemu Microsoft SQL Server zwracająca numer błędu, który właśnie został przechwycony. Ma sens wyłącznie wewnątrz bloku obsługi wyjątku; wywołana poza nim zwróci wartość pustą. Numer jest identyfikatorem konkretnej sytuacji, dzięki czemu kod może reagować różnie w zależności od tego, co poszło nie tak, zamiast traktować każdy błąd jednakowo. To rozróżnienie jest ważne, bo tekst komunikatu bywa tłumaczony na język instalacji, a numer pozostaje ten sam niezależnie od wersji językowej. Rodzina funkcji opisujących przechwycony błądFunkcja nie występuje sama. Obok niej dostępne są odpowiedniki zwracające tekst komunikatu, stopień powagi błędu, jego stan, numer wiersza oraz nazwę procedury, w której błąd powstał. Typowe użycie polega na tym, że w bloku obsługi wyjątku zapisuje się komplet tych wartości do tabeli dziennika zdarzeń, a następnie podejmuje decyzję: wycofać transakcję, ponowić operację albo przekazać błąd wyżej. Warto rozróżnić dwa podejścia: można po prostu odnotować zdarzenie i pójść dalej albo na podstawie numeru rozgałęzić logikę, na przykład inaczej potraktować naruszenie klucza unikalnego, a inaczej przekroczenie czasu oczekiwania na blokadę. Puste wartości, zagnieżdżone bloki i błędy nie do przechwyceniaNajczęstszą pomyłką jest sięgnięcie po numer błędu poza blokiem obsługi wyjątku i zdziwienie, że wynik jest pusty. Druga to zagnieżdżanie bloków: wewnętrzna obsługa przechwytuje błąd i po jej zakończeniu funkcja przestaje raportować to samo zdarzenie na poziomie zewnętrznym, o ile błąd nie został przekazany dalej. Trzecią pułapką jest założenie, że każdy problem da się przechwycić. Część błędów, zwłaszcza tych o najwyższym stopniu powagi albo powstających na etapie kompilacji zapytania, przerywa wykonanie w sposób, którego obsługa wyjątku w tej samej partii nie zdąży zauważyć. Osobną kwestią są transakcje: po niektórych błędach transakcja pozostaje w stanie, w którym można ją już tylko wycofać, więc próba dopisania czegokolwiek do dziennika w tej samej transakcji skończy się utratą wpisu. Baza danych na komputerze, który nie wyrabiaProblemy z bazą często nie są problemami z kodem. Zapytania zaczynają się wysypywać przez przekroczenia czasu, gdy dysk sypie się od dawna, pamięci jest za mało albo maszyna przegrzewa się i zwalnia taktowanie. Warszawskie Pogotowie Komputerowe zajmuje się tą warstwą sprzętową: diagnozujemy stacje robocze i serwery firmowe, wymieniamy nośniki, na których trzyma się pliki bazy, i zabezpieczamy dane przed migracją. Diagnoza laptopa jest u nas bezpłatna, więc sprawdzenie, czy winny jest sprzęt, nic nie kosztuje. |