Jak Przywracanie do punktu awarii (Transact-SQL)

W tym temacie wyjaśniono sposób przywracanie z punktem awarii.Temat jest odpowiednia tylko dla baz danych, które są przy użyciu modelu odzyskiwanie Pełny lub bulk-logged.

Aby przywracanie do punktu awarii

  1. Wykonywanie kopii zapasowej dziennika ogona, uruchamiając następujące podstawowe kopii zapasowej instrukcja:

    BACKUP LOG <database_name>TO <backup_device> 
       WITH NORECOVERY, NO_TRUNCATE;
    
  2. Przywracanie pełnej kopia zapasowa, uruchamiając następujące podstawowe PRZYWRÓĆ bazę danych instrukcja:

    RESTORE DATABASE <database_name> FROM <backup_device> 
       WITH NORECOVERY;
    
  3. Opcjonalnie można przywrócić z kopii zapasowej różnicowa bazy danych, uruchamiając następujące podstawowe RESTORE DATABASE instrukcja:

    RESTORE DATABASE <database_name> FROM <backup_device> 
       WITH NORECOVERY;
    
  4. Zastosowanie każdego dziennika transakcji w tym kopia zapasowa końcowego fragmentu dziennika utworzonego w kroku 1, określając Z NORECOVERY w instrukcja PRZYWRÓCIĆ dziennika:

    RESTORE LOG <database_name> FROM <backup_device> 
       WITH NORECOVERY;
    
  5. Odzyskania bazy, uruchamiając następujące przywracanie bazy danych instrukcja:

    RESTORE DATABASE <database_name> 
       WITH RECOVERY;
    

Przykład

Przed uruchomieniem przykładu, należy wykonać następujące preparaty:

  1. Domyślny model odzyskiwanie z AdventureWorks2008R2 Baza danych jest model odzyskiwanie prostego.Ponieważ w tym modelu odzyskiwanie nie obsługuje przywrócić punktu awarii, zestaw AdventureWorks2008R2 do korzystania z model odzyskiwanie pełnego, uruchamiając następujące ALTER DATABASE instrukcja:

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
    
  2. Utwórz pełną bazę danych z tyłu bazy danych przy użyciu następującej kopii zapasowej instrukcja:

    BACKUP DATABASE AdventureWork2008R2s TO DISK = 'C:\AdventureWorks2008R2_Data.bck';
    
  3. Tworzenie kopia zapasowa dziennika rutynowych:

    BACKUP LOG AdventureWorks2008R2 TO DISK = 'C:\AdventureWorks2008R2_Log.bck';
    

Poniższy przykład przywraca kopie zapasowe utworzone wcześniej, po utworzeniu kopia zapasowa końcowego fragmentu dziennika z AdventureWorks2008R2 bazy danych.(W tym kroku założono możliwy dysk dziennika).

Przykład tworzy najpierw, kopia zapasowa końcowego fragmentu dziennika bazy danych, który przechwytuje aktywnego dziennika i pozostawia w stanie Przywracanie bazy danych.Następnie przykład przywraca kopię zapasową bazy danych, stosuje się rutynowe dziennika kopia zapasowa utworzony wcześniej i stosuje się kopia zapasowa końcowego fragmentu dziennika.Wreszcie przykład odzyskuje bazy danych w osobnym kroku.

Ostrzeżenie

Zachowaniem domyślnym jest odzyskać jako część instrukcja, która przywraca ostatecznej kopia zapasowa bazy danych.

/* Example of restoring a to the point of failure */
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.
BACKUP LOG AdventureWorks2008R2
   TO DISK = 'C:\AdventureWorks2008R2_Log.bck'
   WITH NORECOVERY;
GO
-- Step 2: Restore the full database backup.
RESTORE DATABASE AdventureWorks2008R2
   FROM DISK = 'C:\AdventureWorks2008R2_Data.bck'
   WITH NORECOVERY;
GO
-- Step 3: Restore the first transaction log backup.
RESTORE LOG AdventureWorks2008R2
   FROM DISK = 'C:\AdventureWorks2008R2_Log.bck'
   WITH NORECOVERY;
GO
-- Step 4: Restore the tail-log backup.
RESTORE LOG AdventureWorks2008R2
   FROM  DISK = 'C:\AdventureWorks2008R2_Log.bck'
   WITH NORECOVERY;
GO
-- Step 5: Recover the database.
RESTORE DATABASE AdventureWorks2008R2
   WITH RECOVERY;
GO