Backup bazy danych Microsoft SQL Server, część 2

0

Przenoszenie baz danych
Przedstawione do tej pory sposoby odtwarzania kopii zapasowych dotyczyły sytuacji, w której odtwarzana baza zastępuje już istniejącą na serwerze SQL bazę danych. Ponieważ nie wiązały się one z przeniesieniem baz na inny serwer, wszystkie elementy wymagane do poprawnego działania systemu bazodanowego (takie jak loginy) były już dostępne. Odtworzenie bazy na tym samym serwerze SQL sprowadza się więc do zgodnego z przyjętą strategią odtworzenia jej kopii zapasowych.

Odtworzenie bazy danych na tym samym serwerze, ale pod zmienioną nazwą również jest względnie łatwe. Tego typu operacja wymaga dodatkowo zmiany nazwy bazy zapisanej w pakietach SSIS oraz zadaniach usługi SQL Server Agent i zmiany konfiguracji aplikacji klienckich.

Natomiast odtworzenie bazy danych na innym serwerze SQL dodatkowo wymaga:

  1. Przeniesienia lub odtworzenia znajdujących się w bazie master loginów i powiązania ich ze znajdującymi się w przenoszonej bazie danych kontami użytkowników.
  2. Przeniesienia utworzonych w bazie master procedur składowanych i komunikatów błędów.
  3. Przeniesienia bazy msdb lub skopiowania na docelowy serwer znajdujących się w tej bazie zadań, operatorów i alarmów.
  4. Przeniesienia na docelowy serwer zewnętrznych obiektów (takich jak pliki wykonywalne).

Odtwarzanie serwera SQL
Jeżeli serwer SQL nie może zostać uruchomiony, opis przyczyny błędu znajdziemy w najnowszym pliku ERRORLOG (pliki dziennika serwera SQL znajdują się w podfolderze Log folderu, w którym zainstalowany został ten serwer, np. w folderze C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Log). Gdyby problem nie był spowodowany uszkodzeniem baz systemowych, w pierwszej kolejności należy uruchomić serwer SQL w trybie pojedynczego użytkownika i z minimalną konfiguracją. Umożliwi to program wiersza polecenia sqlservr:

C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe -s SQLEXPRESS –f

Parametr –s pozwala podać nazwę instancji uruchamianego serwera SQL, a parametr –f oznacza uruchamianie serwera w minimalnej konfiguracji.

W ten sposób uruchomiony serwer działa jako program, a nie usługa, a więc:

  1. Przed wylogowaniem się z systemu należy zakończyć jego działanie kombinacją klawiszy Ctrl+C.
  2. Konsole SSMS i SQL Server Configuration Manager będą sygnalizowały, że serwer SQL jest zatrzymany.
  3. Serwer będzie działał w kontekście zabezpieczeń bieżącego użytkownika, a nie konta usługi.

Jeżeli udało się w ten sposób uruchomić serwer SQL, prawdopodobną przyczyną błędu były niewłaściwe opcje konfiguracji serwera.

Ponowna instalacja serwera SQL
Jeżeli nie udało się uruchomić serwera SQL w wierszu polecenia, a w dzienniku zdarzeń znajdują się wpisy wskazujące na uszkodzenie którejś z baz systemowych, takie jak poniższe, czeka nas ponowna instalacja serwera:

Error: 17207, Severity: 16, State: 1.

FCB::Open: Operating system error 2(Nie można odnaleźć określonego pliku.) occurred while creating or opening file 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mssqlsystemresource.mdf’. Diagnose and correct the operating system error, and retry the operation.

Error: 945, Severity: 14, State: 2.

Database 'mssqlsystemresource’ cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.

Error: 5120, Severity: 16, State: 101.

Unable to open the physical file „c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf”. Operating system error 2: „2(Nie można odnaleźć określonego pliku.)”.

Operacja ta sprowadza się do uruchomienia programu instalacyjnego. Ponieważ instalator zastąpi bazy systemowe ich oryginalną wersją, po ponownym uruchomieniu serwer SQL nie podłączy automatycznie produkcyjnych baz danych, a więc użytkownicy nie będą mogli się do nich zalogować.

Uniknąć długotrwałego przywracania baz systemowych poprzez reinstalację serwera SQL możemy, jeśli wcześniej skopiowaliśmy pliki bazy master (pliki master.mdf i mastlog.ldf ).

Niestety, podczas pracy serwer SQL blokuje na wyłączność pliki baz danych, a więc wykonanie takiej ich kopii wymaga wcześniejszego zatrzymania serwera. Jeżeli jednak chwilowe zatrzymanie serwera jest możliwe, warto skopiować pliki bazy master – ich wielkość rzadko przekracza kilkadziesiąt MB (a więc skopiowanie plików nie trwa długo), a zawartość tej bazy jest sporadycznie zmieniana (a więc kopiowanie plików nie będzie musiało być często powtarzane). Jeżeli dysponujemy aktualną kopią plików bazy master, należy nimi zastąpić uszkodzone pliki bazy systemowej i ponownie uruchomić serwer SQL.

Odtwarzanie kopii baz systemowych
Odtworzenie kopii bazy master wymaga uruchomienia serwera SQL, ale serwer SQL nie uruchomi się bez tej bazy. Dlatego po utracie systemowej bazy master (jeśli nie mamy kopii plików bazy) należy:

  1. Uruchomić program instalacyjny serwera, plik Setup.exe.
  2. Po zakończonej instalacji, w trakcie której bazy systemowe zostaną przywrócone do oryginalnej postaci, odtworzyć kopię bazy master.
  3. To z kolei wymaga uruchomienia serwera w trybie pojedynczego użytkownika, a więc konieczne będzie kolejne zatrzymanie serwera SQL i uruchomienie go z opcją -m.
  4. Udane odtworzenie bazy master spowoduje automatyczne wyłączenie serwera SQL. Trzecie uruchomienie serwera (już w trybie wielu użytkowników) definitywnie kończy proces odtwarzania bazy master.

Odtworzenie pozostałych baz systemowych (baz msdb, model i ewentualnie distribution) nie różni się od odtwarzania baz użytkownika.

1
2
3
4
5
PODZIEL SIĘ

BRAK KOMENTARZY

ZOSTAW ODPOWIEDŹ