| Termin | Definicja |
|---|---|
| Error 9002 – pełny dziennik transakcji | Error 9002 sygnalizuje brak wolnego miejsca w dzienniku transakcji, uniemożliwiający dalsze zapisywanie operacji. Co oznacza komunikat SQL Server 9002Błąd 9002 w Microsoft SQL Server oznacza, że dziennik transakcji bazy danych osiągnął rozmiar, przy którym nie może zapisać kolejnych informacji o operacjach. Dziennik transakcji, czyli transaction log, rejestruje między innymi rozpoczęcie i zatwierdzenie transakcji, modyfikacje stron danych oraz informacje potrzebne do wycofania lub odtworzenia zmian. Jest używany zarówno podczas normalnej pracy, jak i w procedurach odzyskiwania po awarii. Gdy w pliku dziennika nie ma dostępnego miejsca, operacje wymagające kolejnych wpisów mogą zostać zatrzymane. Sam komunikat nie wskazuje jeszcze, dlaczego dziennik się zapełnił. Przyczyną może być na przykład długo trwająca transakcja, brak wykonywanych kopii zapasowych dziennika w modelu odzyskiwania full lub bulk-logged, nieudana replikacja, opóźniona synchronizacja mechanizmu Always On albo zbyt mały plik logu. W modelu simple SQL Server może okresowo zwalniać nieużywane fragmenty dziennika po zakończeniu punktu kontrolnego, ale nie oznacza to automatycznego zmniejszania fizycznego rozmiaru pliku na dysku. Dziennik transakcji a model odzyskiwania bazyRozpoznanie modelu odzyskiwania jest jednym z pierwszych elementów analizy. W modelu simple ponowne wykorzystanie części dziennika zależy przede wszystkim od punktów kontrolnych i aktywnych transakcji. W modelach full i bulk-logged dziennik nie jest regularnie oznaczany jako możliwy do ponownego użycia wyłącznie przez checkpoint. Potrzebna jest kopia zapasowa dziennika, która utrwala jego zawartość i pozwala SQL Serverowi zwolnić starsze, już niepotrzebne fragmenty, o ile nie są one nadal wymagane. Właściwość Ustalenie miejsca i przyczyny zapełnienia loguAnaliza powinna objąć zarówno rozmiar pliku dziennika, jak i faktyczne wykorzystanie przydzielonego miejsca. Informacje o plikach bazy można pobrać z Jeżeli powodem jest Ważne jest również rozróżnienie między brakiem miejsca w systemie plików a osiągnięciem maksymalnego rozmiaru pliku logu. Plik może mieć możliwość automatycznego wzrostu, ale wzrost zostanie zablokowany, gdy wolumin nie ma wolnej przestrzeni, ustawiono ograniczenie Bezpieczne przywrócenie możliwości zapisuPostępowanie zależy od ustalonego Jeśli baza nie ma już dostępnej przestrzeni, można po ocenie ryzyka powiększyć istniejący plik dziennika lub dodać plik logu na innym woluminie. Rozmiar i przyrost powinny być dobrane do obserwowanego obciążenia, największych transakcji oraz wymagań odzyskiwania. Po usunięciu przyczyny ewentualne zmniejszenie pliku należy traktować jako czynność wyjątkową, a nie standardową naprawę. Zbyt mały log będzie ponownie rósł, co może powodować cykliczne błędy 9002. Diagnostyka powinna zakończyć się sprawdzeniem kopii zapasowej, stanu bazy, miejsca na woluminach, czasu trwania transakcji i monitoringu wykorzystania dziennika. W środowisku, w którym błąd powtarza się podczas pracy programu, trzeba prześledzić pełny przepływ operacji: otwarcie połączenia, rozpoczęcie transakcji, wykonywane modyfikacje, obsługę wyjątków oraz zatwierdzenie lub wycofanie zmian. Nieobsłużony wyjątek, brak instrukcji rollback albo połączenie pozostawione w stanie transakcji może powodować narastanie logu niezależnie od poprawnie działających kopii zapasowych. Dopiero po połączeniu obserwacji SQL Servera z zachowaniem aplikacji można ustalić, czy źródłem problemu jest konfiguracja bazy, zadanie administracyjne, infrastruktura, czy logika programu. |