Aracılığıyla paylaş


Veritabanını Hata Noktasına Geri Yükleme - Tam Kurtarma

Şunlar için geçerlidir: SQL Server

Bu konu, hatanın oluştuğu noktaya nasıl geri yükleme yapılacağını açıklar. Konu yalnızca tam veya toplu kayıtlı kurtarma modellerini kullanan veritabanları için geçerlidir.

Arıza noktasına geri döndürmek

  1. Aşağıdaki temel BACKUP deyimini çalıştırarak günlüğün kuyruğunu yedekleyin.

    BACKUP LOG <database_name> TO <backup_device>   
       WITH NORECOVERY, NO_TRUNCATE;  
    
  2. Aşağıdaki temel RESTORE DATABASE deyimini çalıştırarak tam veritabanı yedeklemesini geri yükleyin:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  3. İsteğe bağlı olarak, aşağıdaki temel RESTORE DATABASE deyimini çalıştırarak değişiklik veritabanı yedeğini geri yükleyin:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  4. RESTORE LOG deyiminde NORECOVERY ile belirterek, 1. adımda oluşturduğunuz kuyruk günlüğü yedeklemesi de dahil olmak üzere her işlem günlüğünü uygulayın:

    RESTORE LOG <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  5. Aşağıdaki RESTORE DATABASE deyimini çalıştırarak veritabanını kurtarın:

    RESTORE DATABASE <database_name>   
       WITH RECOVERY;  
    

Example

Örneği çalıştırabilmeniz için önce aşağıdaki hazırlıkları tamamlamanız gerekir:

  1. Veritabanının AdventureWorks2025 varsayılan kurtarma modeli, basit kurtarma modelidir. Bu kurtarma modeli hata noktasına geri yüklemeyi desteklemediğinden, aşağıdaki AdventureWorks2025 deyimini çalıştırarak tam kurtarma modelini kullanacak şekilde ayarlayın:

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  
    
  2. Aşağıdaki BACKUP deyimini kullanarak veritabanının tamamının yedeğini oluşturun.

    BACKUP DATABASE AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Data.bck';  
    
  3. Rutin günlük yedeklemesi oluşturma:

    BACKUP LOG AdventureWorks2022 TO DISK = 'C:\AdventureWorks2022_Log.bck';  
    

AdventureWorks2025 veritabanının kuyruk günlüğü yedeğini oluşturduktan sonra, aşağıdaki örnek daha önce oluşturulan yedekleri geri yükler. (Bu adımda günlük diskinin erişilebilir olduğu varsayılır.)

İlk olarak örnek, etkin günlüğü yakalayan ve veritabanını Geri Yükleme durumunda bırakan veritabanının kuyruk günlüğü yedeğini oluşturur. Daha sonra örnek veritabanı yedeklemesini geri yükler, daha önce oluşturulan rutin günlük yedeklemesini uygular ve tail-log yedeklemesini uygular. Son olarak, örnek veritabanını ayrı bir adımda kurtarır.

Uyarı

Varsayılan davranış, son yedeklemeyi geri yükleyen deyimin bir parçası olarak veritabanını geri kazanmaktır.

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

Ayrıca Bkz.

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