| Termin | Definicja |
|---|---|
| 9002 – Brak miejsca w pliku dziennika transakcji | Błąd 9002 sygnalizuje brak wolnego miejsca w pliku dziennika transakcji, uniemożliwiający dalsze zapisywanie operacji. Co oznacza błąd 9002 w SQL ServerBłąd 9002 w Microsoft SQL Server oznacza, że dziennik transakcji bazy danych osiągnął limit dostępnego miejsca i nie może przyjąć kolejnych zapisów. Dziennik transakcji, czyli transaction log, rejestruje zmiany wykonywane w bazie przed ich trwałym zatwierdzeniem w plikach danych. Dzięki temu SQL Server może wycofać niezatwierdzoną transakcję albo odtworzyć zatwierdzone operacje po awarii. Gdy plik dziennika jest pełny, operacje wymagające zapisania kolejnych wpisów logu mogą zostać zatrzymane. Komunikat 9002 nie wskazuje samodzielnie, że uszkodzony jest plik danych lub cały dysk. Opisuje stan dziennika konkretnej bazy, ale przyczyną może być zarówno zbyt mały rozmiar pliku, brak miejsca na woluminie, brak kopii zapasowych logu, długo trwająca transakcja, jak i problem z ponownym wykorzystaniem zapisanych fragmentów dziennika. Po usunięciu objawu warto ustalić, dlaczego SQL Server nie mógł zwolnić miejsca, ponieważ samo jednorazowe zwiększenie pliku może nie rozwiązać problemu. Dlaczego dziennik transakcji przestaje się ponownie wykorzystywaćPlik logu jest podzielony na fragmenty, w których znajdują się rekordy opisujące operacje. Po zakończeniu odpowiednich transakcji fragmenty mogą zostać oznaczone jako możliwe do ponownego użycia. O tym, kiedy stanie się to możliwe, decyduje między innymi model odzyskiwania bazy danych. W modelu FULL oraz BULK_LOGGED regularne kopie zapasowe dziennika transakcji są konieczne do zwalniania jego wcześniejszych części. Jeżeli zadanie wykonywania log backup nie działa, kopie nie są tworzone albo nie mogą zostać zapisane, dziennik może rosnąć aż do wyczerpania przydzielonego miejsca. W modelu SIMPLE SQL Server może ponownie wykorzystywać zatwierdzone fragmenty logu po punkcie kontrolnym, jednak także tutaj dziennik może się zapełnić. Powodem może być pojedyncza bardzo duża transakcja, która nadal jest aktywna, blokada uniemożliwiająca zakończenie operacji albo proces odzyskiwania po awarii. Znaczenie ma również stan bazy w systemach korzystających z mechanizmów wysokiej dostępności lub replikacji, ponieważ oczekiwanie na potwierdzenie lub przesłanie zmian może opóźniać możliwość ponownego użycia części dziennika. Najważniejszą informacją diagnostyczną jest przyczyna oczekiwania na ponowne wykorzystanie logu, a nie tylko procent zajętego miejsca. SQL Server udostępnia ją między innymi w widoku Rozpoznanie źródła przepełnienia loguAnalizę należy rozpocząć od ustalenia, która baza zgłasza błąd 9002, jaki jest rozmiar jej pliku dziennika oraz ile miejsca zajmuje log. Informacje o plikach można odczytać z katalogowych widoków systemowych, takich jak Trzeba odróżnić trzy sytuacje: brak wolnego miejsca na całym woluminie, osiągnięcie maksymalnego rozmiaru ustawionego dla pliku logu oraz brak możliwości logicznego zwolnienia zajętych fragmentów. W pierwszym przypadku powiększenie pliku nie powiedzie się albo pogorszy sytuację. W drugim należy sprawdzić właściwości pliku i ustawienia autowzrostu. W trzecim samo dodanie przestrzeni może jedynie odsunąć kolejny błąd, jeżeli aktywna transakcja lub niesprawne kopie zapasowe nadal blokują ponowne użycie logu. Przydatne jest sprawdzenie aktywnych transakcji za pomocą Bezpieczne przywrócenie miejsca w dziennikuPostępowanie zależy od ustalonej wartości Autowzrost powinien mieć przewidywalny przyrost dobrany do charakteru obciążenia, a nie bardzo mały przyrost procentowy powodujący częste rozszerzanie pliku. Rozmiar dziennika warto ustalić na podstawie rzeczywistych okresów największej aktywności, pełnych operacji konserwacyjnych i wymaganego czasu przechowywania kopii. Zmniejszanie pliku poleceniem Jeżeli problem dotyczy aktywnej transakcji, konieczne jest ustalenie, dlaczego nie została zakończona, i dopiero wtedy podjęcie decyzji o jej kontynuowaniu, zatwierdzeniu lub kontrolowanym wycofaniu. Po przywróceniu działania należy obserwować rozmiar logu, wykorzystanie jego przestrzeni, powodzenie kopii zapasowych oraz kolejne wartości |