Przywracanie stron (SQL Server)
Dotyczy:programu SQL Server
W tym temacie opisano sposób przywracania stron w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL. Celem przywracania strony jest przywrócenie co najmniej jednej uszkodzonej strony bez przywracania całej bazy danych. Zazwyczaj strony, które są kandydatami do przywrócenia, zostały oznaczone jako "podejrzane" z powodu błędu napotkanego podczas uzyskiwania dostępu do strony. Podejrzane strony są identyfikowane w tabeli suspect_pages w bazie danych msdb.
w tym temacie
Przed rozpoczęciem:
Aby przywrócić strony przy użyciu:
Przed rozpoczęciem
Kiedy jest przydatne przywracanie strony?
Przywracanie strony jest przeznaczone do naprawiania uszkodzonych, odizolowanych stron. Przywracanie i odzyskiwanie kilku pojedynczych stron może być szybsze niż przywracanie pliku, co zmniejsza ilość danych, które są w trybie offline podczas operacji przywracania. Jeśli jednak trzeba przywrócić więcej niż kilka stron w pliku, ogólnie bardziej wydajne jest przywrócenie całego pliku. Jeśli wiele stron na urządzeniu wskazuje na nadchodzącą awarię urządzenia, rozważ przywrócenie pliku, możliwie w inne miejsce, oraz naprawę urządzenia.
Ponadto nie wszystkie błędy strony wymagają przywrócenia. Problem może wystąpić w buforowanych danych, takich jak indeks pomocniczy, który można rozwiązać przez ponowne obliczenie danych. Na przykład, jeśli administrator bazy danych usunie indeks pomocniczy i odbuduje go, uszkodzone dane, mimo że są naprawione, nie są wskazywane jako takie w tabeli suspect_pages.
Ograniczenia i ograniczenia
Przywracanie strony dotyczy baz danych programu SQL Server korzystających z pełnych lub rejestrowanych zbiorczo modeli odzyskiwania. Przywracanie strony jest obsługiwane tylko dla grup plików odczytu/zapisu.
Można przywrócić tylko strony bazy danych. Nie można użyć przywracania strony do przywrócenia następujących elementów:
Dziennik transakcji
Strony alokacyjne: Strony Globalnej Mapy Alokacji (GAM), Strony Współdzielonej Globalnej Mapy Alokacji (SGAM) oraz Strony Wolnej Przestrzeni na Stronie (PFS).
Strona 0 wszystkich plików danych (strona rozruchowa pliku)
Strona 1:9 (strona rozruchu bazy danych)
Wykaz pełnotekstowy
W przypadku bazy danych korzystającej z modelu odzyskiwania rejestrowanego zbiorczo przywracanie strony ma następujące dodatkowe warunki:
Tworzenie kopii zapasowej, gdy dane grupy plików lub strony są w trybie offline, są problematyczne w przypadku danych rejestrowanych zbiorczo, ponieważ dane offline nie są rejestrowane w dzienniku. Każda strona offline może uniemożliwić tworzenie kopii zapasowej dziennika. W takich przypadkach rozważ użycie funkcji DBCC REPAIR, ponieważ może to spowodować mniej utraty danych niż przywrócenie najnowszej kopii zapasowej.
Jeśli kopia zapasowa dziennika bazy danych w trybie rejestrowania zbiorczego napotka nieprawidłową stronę, nie powiedzie się, chyba że wskazano CONTINUE_AFTER_ERROR.
Przywracanie strony zwykle nie działa z odzyskiwaniem rejestrowanym zbiorczo.
Najlepszym rozwiązaniem do wykonania przywracania strony jest ustawienie bazy danych na model pełnego odzyskiwania i wypróbowanie kopii zapasowej dziennika. Jeśli kopia zapasowa dziennika działa, możesz kontynuować przywracanie strony. Jeśli tworzenie kopii zapasowej dziennika zakończy się niepowodzeniem, musisz utracić pracę od czasu utworzenia poprzedniej kopii zapasowej dziennika lub należy uruchomić polecenie DBCC z opcją REPAIR_ALLOW_DATA_LOSS.
Zalecenia
Scenariusze przywracania strony:
Przywracanie strony w trybie offline
Wszystkie wersje programu SQL Server obsługują przywracanie stron, gdy baza danych jest w trybie offline. W przypadku przywracania strony w trybie offline baza danych jest w trybie offline, gdy uszkodzone strony są przywracane. Na końcu sekwencji przywracania baza danych jest w trybie online.Przywracanie strony online
Wersja SQL Server Enterprise obsługuje przywracanie stron online, choć używają przywracania w trybie offline, jeśli baza danych jest obecnie w trybie offline. W większości przypadków uszkodzona strona może zostać przywrócona, gdy baza danych pozostaje w trybie online, w tym grupę plików, do której jest przywracana strona. Jeśli podstawowa grupa plików jest w trybie online, nawet jeśli co najmniej jedna z jej pomocniczych grup plików jest w trybie offline, przywracanie strony jest zwykle wykonywane w trybie online. Czasami jednak uszkodzona strona może wymagać przywrócenia w trybie offline. Na przykład uszkodzenie niektórych krytycznych stron może uniemożliwić uruchomienie bazy danych.Ostrzeżenie
Jeśli uszkodzone strony przechowują krytyczne metadane bazy danych, wymagane aktualizacje metadanych mogą zakończyć się niepowodzeniem podczas próby przywrócenia strony online. W takim przypadku można wykonać przywracanie strony w trybie offline, ale najpierw należy utworzyć kopii zapasowej dziennika ogona (tworząc kopię zapasową dziennika transakcji przy użyciu funkcji RESTORE WITH NORECOVERY).
Przywracanie stron wykorzystuje ulepszone raportowanie błędów na poziomie pojedynczych stron (w tym sumy kontrolne) oraz ich śledzenie. Strony, które są wykrywane jako uszkodzone przez sumowanie sprawdzania lub rozdarty zapis, uszkodzone strony, można przywrócić przez operację przywracania strony. Przywracane są tylko jawnie określone strony. Każda określona strona jest zastępowana kopią tej strony z określonej kopii zapasowej danych.
Po przywróceniu kolejnych kopii zapasowych dziennika są one stosowane tylko do plików bazy danych zawierających co najmniej jedną stronę, która jest odzyskiwana. Aby przenieść grupę plików zawierającą stronę do bieżącego pliku dziennika, należy zastosować niezwiązany łańcuch kopii zapasowych dziennika do ostatniego pełnego lub różnicowego przywracania. Podobnie jak w przypadku przywracania plików, zestaw przywracania do przodu jest zaawansowany z jednoetapowym przetwarzaniem ponownego dziennika. Aby przywracanie strony powiodło się, przywrócone strony muszą zostać odzyskane do stanu zgodnego z bazą danych.
Bezpieczeństwo
Uprawnienia
Jeśli przywracana baza danych nie istnieje, użytkownik musi mieć uprawnienia CREATE DATABASE, aby móc wykonać funkcję RESTORE. Jeśli baza danych istnieje, uprawnienia RESTORE są domyślne dla członków sysadmin i dbcreator stałych ról serwera i właściciela (dbo) bazy danych (dla opcji FROM DATABASE_SNAPSHOT baza danych zawsze istnieje).
Uprawnienia RESTORE są przekazywane do ról, w których informacje o członkostwie są zawsze łatwo dostępne dla serwera. Ponieważ stałe członkostwo w roli bazy danych można sprawdzić tylko wtedy, gdy baza danych jest dostępna i nieuszkodzona, co nie zawsze ma miejsce przy wykonywaniu polecenia RESTORE, członkowie stałej roli bazy danych db_owner nie mają uprawnień do wykonywania operacji RESTORE.
Korzystanie z programu SQL Server Management Studio
Począwszy od programu SQL Server 2016 (13.x), program SQL Server Management Studio obsługuje przywracanie stron.
Aby przywrócić strony
Połącz się z odpowiednim wystąpieniem aparatu bazy danych SQL Server, a następnie w Eksploratorze obiektów kliknij nazwę serwera, aby rozwinąć drzewo serwerów.
Rozwiń bazy danych . W zależności od bazy danych wybierz bazę danych użytkownika lub rozwiń System Databases, a następnie wybierz systemową bazę danych.
Kliknij prawym przyciskiem myszy bazę danych, wskaż polecenie Tasks, wskaż polecenie Restore, a następnie kliknij pozycję Page, co spowoduje otwarcie okna dialogowego strony przywracania.
Przywracanie
Ta sekcja wykonuje tę samą funkcję co Restore do na Restore Database (strona ogólna).Baza danych
Określa bazę danych do przywrócenia. Możesz wprowadzić nową bazę danych lub wybrać istniejącą bazę danych z listy rozwijanej. Lista zawiera wszystkie bazy danych na serwerze, z wyjątkiem systemowych baz danych master i tempdb.Ostrzeżenie
Aby przywrócić kopię zapasową chronioną hasłem, należy użyć instrukcji RESTORE.
Tail-Log kopii zapasowej
Wprowadź lub wybierz nazwę pliku na urządzeniu Backup, w którym będzie przechowywana kopia zapasowa tail-log dla bazy danych.zestawy kopii zapasowych
W tej sekcji są wyświetlane zestawy kopii zapasowych, które są zaangażowane w proces przywracania.Nagłówek Wartości nazwa Nazwa zestawu kopii zapasowych. komponent Składnik kopii zapasowej: Database, Filelub <puste> (w przypadku dzienników transakcji). Typ Typ wykonywanej kopii zapasowej: Pełnej, Różnicowejlub dziennika transakcji. Server Nazwa wystąpienia silnika bazy danych, które wykonało operację tworzenia kopii zapasowej. Baza danych Nazwa bazy danych zaangażowanej w operację tworzenia kopii zapasowej. położenie Położenie zestawu kopii zapasowych w woluminie. pierwszy LSN Numer sekwencji dziennika (LSN) pierwszej transakcji w zestawie kopii zapasowych. Puste miejsce na kopie zapasowe plików. ostatnie LSN Numer sekwencji dziennika (LSN) ostatniej transakcji w zestawie kopii zapasowych. Pole puste dla kopii zapasowych plików. punkt kontrolny LSN Numer sekwencji dziennika (LSN) ostatniego punktu kontrolnego podczas tworzenia kopii zapasowej. pełny LSN Numer sekwencji dziennika (LSN) najnowszej pełnej kopii zapasowej bazy danych. data rozpoczęcia Data i godzina rozpoczęcia operacji tworzenia kopii zapasowej przedstawione w regionalnym ustawieniu klienta. data zakończenia Data i godzina zakończenia operacji tworzenia kopii zapasowej przedstawione w regionalnym ustawieniu klienta. Rozmiar Rozmiar zestawu kopii zapasowych w bajtach. nazwa użytkownika Nazwa użytkownika, który wykonał operację tworzenia kopii zapasowej. wygasanie Data i godzina wygaśnięcia zestawu kopii zapasowych. Kliknij Sprawdź, aby sprawdzić integralność plików kopii zapasowej wymaganych do wykonania operacji przywracania strony.
Aby zidentyfikować uszkodzone strony, po wybraniu poprawnej bazy danych w polu Database, kliknij Sprawdź strony bazy danych. Jest to długotrwała operacja.
Ostrzeżenie
Aby przywrócić określone strony, które nie są uszkodzone, kliknij Dodaj i wprowadź identyfikator pliku i identyfikator strony, które mają zostać przywrócone.
Siatka stron jest używana do identyfikacji stron, które mają być przywrócone. Początkowo ta siatka jest wypełniana z tabeli systemu suspect_pages. Aby dodać lub usunąć strony z siatki, kliknij przycisk Dodaj lub Usuń. Aby uzyskać więcej informacji, zobacz Zarządzanie tabelą suspect_pages (SQL Server).
Zestawy kopii zapasowych zawiera listę zestawów kopii zapasowych w domyślnym planie przywracania. Opcjonalnie kliknij przycisk Sprawdź, aby sprawdzić, czy kopie zapasowe są łatwe do odczytania i czy zestawy kopii zapasowych są kompletne, bez potrzeby ich przywracania. Aby uzyskać więcej informacji, zobacz RESTORE VERIFYONLY (Transact-SQL).
Pages
Aby przywrócić strony wymienione w siatce stron, kliknij przycisk OK.
Korzystanie z Transact-SQL
Aby określić stronę w instrukcji RESTORE DATABASE, potrzebny jest identyfikator pliku zawierającego stronę i identyfikator strony. Wymagana składnia jest następująca:
RESTORE DATABASE <database_name>
PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
WITH NORECOVERY
Aby uzyskać więcej informacji na temat parametrów opcji PAGE, zobacz RESTORE Arguments (Transact-SQL). Aby uzyskać więcej informacji na temat składni RESTORE DATABASE, zobacz RESTORE (Transact-SQL).
Przywrócić strony
Uzyskaj identyfikatory uszkodzonych stron do przywrócenia. Suma kontrolna lub rozdarty błąd zapisu zwraca identyfikator strony, podając informacje wymagane do określenia stron. Aby wyszukać identyfikator strony uszkodzonej strony, użyj dowolnego z następujących źródeł.
Źródło identyfikatora strony Temat msdb..suspect_pages Zarządzanie tabelą suspect_pages (SQL Server) Dziennik błędów wyświetl dziennik błędów programu SQL Server (SQL Server Management Studio) Śledzenie zdarzeń monitorowanie zdarzeń i reagowanie na nie DBCC DBCC (Transact-SQL) Dostawca usługi WMI Dostawca WMI dla koncepcji zdarzeń serwera Rozpocznij przywracanie strony z pełną bazą danych, plikiem lub kopią zapasową grupy plików zawierającą stronę. W instrukcji RESTORE DATABASE użyj klauzuli PAGE, aby wyświetlić listę identyfikatorów stron wszystkich stron do przywrócenia.
Zastosuj najnowsze różnice kursowe.
Zastosuj kolejne kopie zapasowe dziennika.
Utwórz nową kopię zapasową dziennika bazy danych, która zawiera ostateczny LSN przywróconych stron, czyli punkt, w którym ostatnia przywrócona strona jest wyłączona. Ostatni LSN, który jest ustawiany jako część pierwszego przywracania w sekwencji, to docelowy LSN do odtworzenia. W trybie online przesunięcie do przodu pliku zawierającego stronę może zatrzymać się na docelowym numerze sekwencji logu (LSN). Aby poznać bieżący docelowy LSN dla operacji przywracania pliku, zobacz kolumnę redo_target_lsn w sys.master_files. Aby uzyskać więcej informacji, zobacz sys.master_files (Transact-SQL).
Przywróć nową kopię zapasową dziennika. Po zastosowaniu nowej kopii zapasowej dziennika przywracanie strony zostanie ukończone, a strony będą teraz używane.
Notatka
Ta sekwencja jest analogiczna do sekwencji przywracania plików. W rzeczywistości przywracanie strony i przywracanie plików mogą być wykonywane w ramach tej samej sekwencji.
Przykład (Transact-SQL)
Poniższy przykład przywraca cztery uszkodzone strony pliku B
przy użyciu NORECOVERY
. Następnie zastosowane zostaną dwie kopie zapasowe dziennika z NORECOVERY
, a po nich kopia zapasowa końcówki dziennika, która zostanie przywrócona przy użyciu RECOVERY
. W tym przykładzie jest wykonywane przywracanie w trybie online. W tym przykładzie identyfikator pliku B
jest 1
, a identyfikatory stron uszkodzonych stron są 57
, 202
, 916
i 1016
.
RESTORE DATABASE [<database>] PAGE='1:57, 1:202, 1:916, 1:1016'
FROM DISK = '<file_backup_of_file_B>'
WITH NORECOVERY;
RESTORE LOG [<database>] FROM [<log_backup>]
WITH NORECOVERY;
RESTORE LOG [<database>] FROM [<log_backup>]
WITH NORECOVERY;
BACKUP LOG [<database>] TO [<new_log_backup>];
RESTORE LOG [<database>] FROM [<new_log_backup>] WITH RECOVERY;
GO
Zobacz też
RESTORE (Transact-SQL)
stosowanie kopii zapasowych dziennika transakcji (SQL Server)
Zarządzanie tabelą suspect_pages (SQL Server)
tworzenie kopii zapasowych i przywracanie baz danych programu SQL Server