Bagikan melalui


Memulihkan Database ke Titik Kegagalan Di bawah Model Pemulihan Penuh (Transact-SQL)

Topik ini menjelaskan cara memulihkan ke titik kegagalan. Topik ini hanya relevan untuk database yang menggunakan model pemulihan penuh atau dicatat secara massal.

Untuk memulihkan ke titik kegagalan

  1. Cadangkan ekor log dengan menjalankan pernyataan BACKUP dasar berikut:

    BACKUP LOG <database_name> TO <backup_device>   
       WITH NORECOVERY, NO_TRUNCATE;  
    
  2. Pulihkan pencadangan database lengkap dengan menjalankan pernyataan RESTORE DATABASE dasar berikut ini:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  3. Secara opsional, pulihkan cadangan database diferensial dengan menjalankan pernyataan RESTORE DATABASE dasar berikut:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  4. Terapkan setiap log transaksi, termasuk cadangan tail-log yang Anda buat di langkah 1, dengan menentukan WITH NORECOVERY dalam pernyataan RESTORE LOG:

    RESTORE LOG <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  5. Pulihkan database dengan menjalankan pernyataan RESTORE DATABASE berikut ini:

    RESTORE DATABASE <database_name>   
       WITH RECOVERY;  
    

Contoh

Sebelum dapat menjalankan contoh, Anda harus menyelesaikan persiapan berikut:

  1. Model pemulihan default database AdventureWorks2012 adalah model pemulihan sederhana. Karena model pemulihan ini tidak mendukung pemulihan ke titik kegagalan, atur AdventureWorks2012 untuk menggunakan model pemulihan penuh dengan menjalankan pernyataan ALTER DATABASE berikut:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;  
    
  2. Buat database lengkap di belakang database dengan menggunakan pernyataan BACKUP berikut:

    BACKUP DATABASE AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Data.bck';  
    
  3. Buat cadangan log rutin:

    BACKUP LOG AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Log.bck';  
    

Contoh berikut memulihkan cadangan yang dibuat sebelumnya, setelah membuat cadangan log ekor dari database AdventureWorks2012 . (Langkah ini mengasumsikan bahwa disk log dapat diakses.)

Pertama, contoh membuat cadangan log ekor database yang menangkap log aktif dan meninggalkan database dalam status Memulihkan. Kemudian, contoh memulihkan cadangan database, menerapkan cadangan log rutin yang dibuat sebelumnya, dan menerapkan cadangan tail-log. Terakhir, contoh memulihkan database dalam langkah terpisah.

Catatan

Perilaku default adalah memulihkan database sebagai bagian dari pernyataan yang memulihkan cadangan akhir.

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

Lihat juga

BACKUP (Transact-SQL)
RESTORE (Transact-SQL)