Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Jeśli dane w bazie danych online staną się uszkodzone, w niektórych przypadkach przywrócenie bazy danych do migawki bazy danych, która poprzedza uszkodzenie, może być odpowiednią alternatywą dla przywrócenia bazy danych z kopii zapasowej. Na przykład przywrócenie bazy danych może być przydatne w przypadku odwrócenia ostatniego poważnego błędu użytkownika, takiego jak porzucona tabela. Jednak wszelkie zmiany wprowadzone po utworzeniu migawki zostają utracone.
Przed rozpoczęciem:
Aby przywrócić bazę danych do migawki bazy danych za pomocą polecenia:Transact-SQL
Przed rozpoczęciem
Ograniczenia i ograniczenia
Przywracanie nie jest obsługiwane w następujących sytuacjach:
Baza danych zawiera wiele migawek. W przypadku przywracania musi istnieć tylko jedna migawka bazy danych, do której zamierzasz przywrócić.
Wszystkie grupy plików tylko do odczytu lub skompresowane istnieją w bazie danych.
Dowolne pliki są teraz offline, ale były online, gdy tworzono migawkę.
Przed przywróceniem bazy danych należy wziąć pod uwagę następujące ograniczenia:
Przywracanie nie jest przeznaczone do odzyskiwania multimediów. Migawka bazy danych jest niekompletną kopią plików bazy danych, więc jeśli baza danych lub migawka bazy danych jest uszkodzona, przywrócenie migawki może być niemożliwe. Ponadto, nawet jeśli jest to możliwe, przywrócenie w przypadku uszkodzenia jest mało prawdopodobne, aby rozwiązać problem. W związku z tym regularne tworzenie kopii zapasowych i testowanie planu przywracania jest niezbędne do ochrony bazy danych. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowych i przywracanie baz danych programu SQL Server.
Notatka
Jeśli musisz mieć możliwość przywrócenia źródłowej bazy danych do punktu w czasie, w którym utworzono migawkę bazy danych, użyj modelu pełnego odzyskiwania i zaimplementuj zasady tworzenia kopii zapasowych, które umożliwiają wykonanie tej czynności.
Oryginalna źródłowa baza danych jest zastępowana przez przywróconą bazę danych, więc wszystkie aktualizacje bazy danych od czasu utworzenia migawki zostaną utracone.
Operacja przywracania zastępuje również stary plik dziennika i ponownie kompiluje dziennik. W związku z tym nie można przywrócić przywróconej bazy danych do momentu wystąpienia błędu użytkownika. Dlatego zalecamy utworzenie kopii zapasowej dziennika przed przywróceniem bazy danych.
Notatka
Chociaż nie można przywrócić oryginalnego dziennika w celu przekazania bazy danych, informacje w oryginalnym pliku dziennika mogą być przydatne do odtworzenia utraconych danych.
Przywracanie powoduje przerwanie łańcucha kopii zapasowych dziennika. W związku z tym przed wykonaniem kopii zapasowych dziennika przywróconej bazy danych należy najpierw utworzyć pełną kopię zapasową bazy danych lub kopię zapasową pliku. Zalecamy utworzenie pełnej kopii zapasowej bazy danych.
Podczas operacji przywracania migawka i źródłowa baza danych są niedostępne. Źródłowa baza danych i migawka są oznaczone jako "W przywracaniu". Jeśli podczas operacji przywracania wystąpi błąd, po ponownym uruchomieniu bazy danych operacja przywracania spróbuje zakończyć przywracanie.
Metadane przywróconej bazy danych są takie same jak metadane z chwili migawki.
Przywracanie usuwa wszystkie wykazy pełnotekstowe.
Warunki wstępne
Upewnij się, że źródłowa baza danych i migawka bazy danych spełniają następujące wymagania wstępne:
Sprawdź, czy baza danych nie została uszkodzona.
Notatka
Jeśli baza danych została uszkodzona, musisz przywrócić ją z kopii zapasowych. Aby uzyskać więcej informacji, zobacz Complete Database Restores (Simple Recovery Model) lub Complete Database Restores (Model pełnego odzyskiwania).
Zidentyfikuj ostatnią migawkę, która została utworzona przed błędem. Aby uzyskać więcej informacji, zobacz View a Database Snapshot (SQL Server).
Usuń wszystkie inne migawki, które obecnie istnieją w bazie danych. Aby uzyskać więcej informacji, zobacz Drop a Database Snapshot (Transact-SQL).
Bezpieczeństwo
Uprawnienia
Każdy użytkownik, który ma uprawnienia RESTORE DATABASE w źródłowej bazie danych, może przywrócić ją do stanu z momentu, gdy została utworzona migawka bazy danych.
Jak przywrócić bazę danych do migawki bazy danych (przy użyciu Transact-SQL)
Aby przywrócić bazę danych do migawki bazy danych
Notatka
Aby zapoznać się z przykładem tej procedury, zobacz Przykłady (Transact-SQL), w dalszej części tej sekcji.
Zidentyfikuj migawkę bazy danych, do której chcesz przywrócić bazę danych. Migawki można wyświetlić w bazie danych w programie SQL Server Management Studio (zobacz Wyświetl migawkę bazy danych (SQL Server)). Ponadto można zidentyfikować bazę danych źródła widoku z kolumny source_database_idsys.databases (Transact-SQL) widoku katalogu.
Usuń wszystkie inne migawki bazy danych.
Aby uzyskać informacje na temat usuwania migawek, zobacz Drop a Database Snapshot (Transact-SQL). Jeśli baza danych używa pełnego modelu odzyskiwania, przed przywróceniem należy utworzyć kopię zapasową dziennika. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowej dziennika transakcji (SQL Server) lub tworzenie kopii zapasowej dziennika transakcji, gdy baza danych jest uszkodzona (SQL Server).
Wykonaj operację cofnięcia.
Operacja przywracania wymaga uprawnień RESTORE DATABASE w źródłowej bazie danych. Aby przywrócić bazę danych, użyj następującej instrukcji Transact-SQL:
PRZYWRÓĆ BAZĘ DANYCH database_name Z DATABASE_SNAPSHOT =database_snapshot_name
Gdzie database_name jest źródłową bazą danych, a database_snapshot_name to nazwa migawki, do której chcesz przywrócić bazę danych. Zwróć uwagę, że w tej instrukcji należy określić nazwę migawki, a nie urządzenie kopii zapasowej.
Aby uzyskać więcej informacji, zobacz RESTORE (Transact-SQL).
Notatka
Podczas operacji przywracania migawka i źródłowa baza danych są niedostępne. Źródłowa baza danych i migawka są oznaczone jako "W przywracaniu". Jeśli podczas operacji przywracania wystąpi błąd, spróbuje zakończyć przywracanie po ponownym uruchomieniu bazy danych.
Jeśli właściciel bazy danych zmienił się od momentu utworzenia migawki bazy danych, może być konieczne zaktualizowanie właściciela przywróconej bazy danych.
Notatka
Przywrócona baza danych zachowuje uprawnienia i konfigurację (takie jak właściciel bazy danych i model odzyskiwania) migawki bazy danych.
Uruchom bazę danych.
Opcjonalnie wykonaj kopię zapasową przywróconej bazy danych, zwłaszcza jeśli używa pełnego (lub zarejestrowanego zbiorczo) modelu odzyskiwania. Aby utworzyć kopię zapasową bazy danych, zobacz Tworzenie pełnej kopii zapasowej bazy danych (SQL Server).
Przykłady (Transact-SQL)
Ta sekcja zawiera następujące przykłady przywracania bazy danych do migawki bazy danych:
A. Przywracanie migawki w bazie danych AdventureWorks
W tym przykładzie przyjęto założenie, że w bazie danych AdventureWorks2022
istnieje tylko jedna migawka. Dla przykładu tworzenia migawki bazy danych, do której przywracana jest baza, zobacz Tworzenie migawki bazy danych (Transact-SQL).
USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
B. Przywracanie migawki w bazie danych Sales
W tym przykładzie przyjęto założenie, że w bazie danych Sales istnieją obecnie dwie migawki: sales_snapshot0600 i sales_snapshot1200. Przykład usuwa starsze migawki i przywraca bazę danych do nowszej migawki.
Aby zapoznać się z kodem tworzenia przykładowej bazy danych i migawek, od których zależy ten przykład, zobacz:
Aby uzyskać bazę danych Sales i migawkę sales_snapshot0600, zobacz "Tworzenie bazy danych z grupami plików" i "Tworzenie migawki bazy danych" w CREATE DATABASE (SQL Server Transact-SQL).
Aby uzyskać migawkę sales_snapshot1200, zobacz "Tworzenie migawki w bazie danych Sales" w Tworzenie migawki bazy danych (Transact-SQL).
--Test to see if sales_snapshot0600 exists and if it
-- does, delete it.
IF EXISTS (SELECT database_id FROM sys.databases
WHERE NAME='sales_snapshot0600')
DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO
Powiązane zadania
Zobacz też
Migawki bazy danych (SQL Server)
RESTORE (Transact-SQL)
sys.databases (Transact-SQL)
Dublowanie baz danych i migawki baz danych (SQL Server)