Restore master wymaga uruchomienia instancji w trybie jednego użytkownika i jest jedną z najbardziej ryzykownych operacji.
Rola bazy master w instancji SQL Server
Restore master oznacza odtworzenie systemowej bazy danych master w Microsoft SQL Server z pełnej kopii zapasowej. Nie jest to przywracanie zwykłej bazy użytkownika ani operacja dotycząca wyłącznie jednej aplikacji. Baza master przechowuje informacje potrzebne do uruchomienia instancji oraz jej podstawowej pracy, między innymi metadane baz danych, loginy, konfigurację endpointów, zarejestrowane serwery połączone i część ustawień instancji. Podczas startu SQL Server musi mieć dostęp do działającej, przynajmniej częściowo użytecznej bazy master.
Przywrócenie tej bazy może odtworzyć stan instancji z chwili wykonania kopii. Zmiany wprowadzone później, takie jak nowe loginy, zmodyfikowane ścieżki plików baz użytkownika, nowe endpointy lub zmiany konfiguracji zapisane w master, mogą zostać utracone. Sama operacja nie odtwarza zawartości baz użytkownika. Pliki danych i dzienniki tych baz muszą pozostać dostępne albo zostać odtworzone osobnymi operacjami.
Dlaczego wymagany jest tryb jednego użytkownika
Standardowo z instancją SQL Server może łączyć się wiele procesów: aplikacje, usługi, narzędzia administracyjne, agenci monitoringu i komponenty środowiska. Baza master jest jednak używana przez samą instancję, dlatego nie można jej zastąpić podczas normalnej wielosesyjnej pracy. Przed rozpoczęciem przywracania SQL Server uruchamia się w trybie jednego użytkownika, w którym tylko jedno połączenie może wykonać pracę administracyjną.
W praktyce istotne jest nie tylko włączenie trybu jednego użytkownika, ale również kontrolowanie tego jedynego połączenia. Automatycznie uruchomiona usługa, SQL Server Agent, Object Explorer w SQL Server Management Studio albo inny proces może zająć sesję przed narzędziem administracyjnym. Z tego powodu Microsoft zaleca użycie narzędzia sqlcmd, a parametr startowy -mSQLCMD może ograniczyć dostęp do połączeń pochodzących właśnie z tego narzędzia. Parametry startowe powinny być dobrane do konkretnej instancji, a połączenia kontrolowane do momentu zakończenia operacji.
Przebieg odtworzenia z kopii zapasowej
Do przywrócenia potrzebna jest pełna kopia zapasowa bazy master. Dla tej bazy stosowany jest model odzyskiwania SIMPLE, a kopie dziennika transakcji master nie są obsługiwane. Kopia powinna pochodzić z tej samej wersji SQL Server, a w sytuacji odtwarzania awaryjnego instancja docelowa powinna mieć co najmniej zgodną wersję, edycję i poziom poprawek. Znaczenie mają także elementy konfiguracji zewnętrznej, takie jak nazwa hosta, członkostwo w klastrze oraz używane funkcje.
Po uruchomieniu instancji w trybie jednego użytkownika administrator łączy się z bazą master przez sqlcmd i wykonuje polecenie w rodzaju RESTORE DATABASE master FROM DISK = 'ścieżka_do_kopii.bak' WITH REPLACE;. Ścieżka jest przykładowa i musi wskazywać rzeczywiste urządzenie kopii zapasowej dostępne dla procesu SQL Server. Opcja REPLACE pozwala zastąpić istniejącą bazę o tej samej nazwie, dlatego jej użycie wymaga potwierdzenia, że wybrano właściwy plik i właściwą instancję. Po pomyślnym odtworzeniu SQL Server wyłącza instancję, a proces sqlcmd zostaje zakończony.
Czynności po restarcie instancji
Przed ponownym uruchomieniem należy usunąć parametr trybu jednego użytkownika i wystartować SQL Server normalnie jako usługę. Pozostawienie parametru -m lub jego odmiany może spowodować, że po restarcie nadal będzie dostępne tylko jedno połączenie, co utrudni dalszą administrację. Po uruchomieniu trzeba sprawdzić stan instancji, obecność oczekiwanych baz, dostępność plików danych oraz możliwość logowania za pomocą kont administracyjnych odtworzonych z kopii.
Odtworzenie master może wymagać kolejnych działań: przywrócenia baz użytkownika, ponownego podłączenia baz, korekty ścieżek plików, odtworzenia konfiguracji zewnętrznych oraz sprawdzenia zgodności loginów z użytkownikami baz. Jeżeli kopia master nie istnieje albo baza jest uszkodzona w stopniu uniemożliwiającym start instancji, właściwą procedurą może być odbudowa systemowych baz danych, a następnie odtworzenie dostępnych kopii master, model i msdb. Ze względu na wpływ na całą instancję Restore master powinien być wykonywany dopiero po identyfikacji kopii, sprawdzeniu zgodności środowiska i przygotowaniu planu dalszego odzyskiwania.