Microsoft SQL Server 2008

Kiedy i jak stosować naprawy w trybie awaryjnym Udostępnij na: Facebook

Wskazówki dotyczące SQL Server

Opublikowano: 15 maja 2009

Tryb EMERGENCY (Awaryjny) jest stosowany, gdy dziennik transakcji bazy danych został uszkodzony i nie ma kopii zapasowych, z których można go odtworzyć. W takim przypadku nie działają zwykłe naprawy – naprawy są w całości rejestrowane i nie mogą mieć miejsca, gdy uszkodzony jest dziennik transakcji.

W SQL Server 2000 i wersjach wcześniejszych tryb EMERGENCY był nieudokumentowany i używano go, aby umożliwić odbudowę dziennika transakcji za pomocą nieudokumentowanego polecenia DBCC REBUILD_LOG. Niestety procedura ta była publikowana w Internecie, ale zwykle bez podawania kroków potrzebnych do wykonania.

Z tego powodu w SQL Server 2005 zespół tworzący program zdecydował się na dodanie udokumentowanej i obsługiwanej metody odbudowywania dziennika transakcji i odtwarzania bazy danych. Funkcja ta określana jest jako naprawa w trybie awaryjnym, a jest mechanizm pozostał niezmieniony w SQL Server 2008.

Gdy baza danych jest w trybie EMERGENCY i trybie SINGLE_USER, zaś DBCC CHECKDB jest uruchomiony z opcją REPAIR_ALLOW_DATA_LOSS, trzeba podjąć następujące kroki:

  1. Wymuszamy uruchomienie odzyskiwania w dzienniku transakcji (jeśli istnieje). Jest to przede wszystkim odzyskiwanie z opcją CONTINUE_AFTER_ERROR (z kontynuacją po błędzie), podobne do użycia CONTINUE_AFTER_ERROR wraz z BACKUP lub RESTORE. Pomysł polega na tym, że baza danych jest już niespójna, gdyż albo zniszczony jest dziennik transakcji, albo baza danych ma uszkodzenie, które uniemożliwia jej pełne odtworzenie.

    Przyjmując, że baza danych jest niespójna i dziennik transakcji ma zostać odbudowany, sens ma ocalenie z dziennika tak wielu informacji o transakcjach, jak tylko możliwe, zanim zostanie on odrzucony, aby utworzyć nowy.

    Odtwarzanie z funkcją CONTINUE_AFTER_ERROR możliwe jest tylko w DBCC CHECKDB.

  2. Odbudowujemy dziennik transakcji, jeśli jest uszkodzony.

  3. Uruchamiamy pełny zestaw sprawdzeń spójności bazy danych z opcją REPAIR_ALLOW_DATA_LOSS (Naprawa z możliwą utratą danych).

  4. Przywracamy bazę danych do trybu online.

Na podstawie przygotowywanej przez Microsoft Press książki, Microsoft SQL Server 2008 Internals (Kalen Delaney, Paul S. Randal, Kimberly L. Tripp, Conor Cunningham, Adam Machanic i Ben Nevarez). Planowane wydanie w 18 lutego 2009.

Więcej informacji na temat naprawy w trybie EMERGENCY można znaleźć na blogu Paula CHECKDB From Every Angle: EMERGENCY mode repair - the very, very last resort

 

 Do początku strony Do początku strony

Microsoft SQL Server 2008