DBAtlas · Veritabanı operasyon atlası

Restore öncesi tail-log yedeği al (NORECOVERY / NO_TRUNCATE)

SQL ServerRestore & Kurtarma

Komut

-- A) Saglam DB: son log'u al ve DB'yi RESTORING durumuna gecir (yeni yazma olmaz):
BACKUP LOG [Musteri]
TO DISK = N'D:\Backup\Musteri_tail.trn'
WITH NORECOVERY, CHECKSUM, INIT;

-- B) Hasarli DB / data file kayip, log dosyasi saglam:
-- BACKUP LOG [Musteri]
-- TO DISK = N'D:\Backup\Musteri_tail_damaged.trn'
-- WITH NO_TRUNCATE, CONTINUE_AFTER_ERROR, INIT;

SELECT name, state_desc FROM sys.databases WHERE name = N'Musteri';

Ne yapar?

Son log yedeğinden bu yana oluşan ve henüz yedeklenmemiş log kısmını (tail) yedekler; böylece restore zinciri arıza anına kadar uzatılır ve son dakikaların işlemleri kaybolmaz.

Ne zaman kullanılır?

Aynı veritabanının üzerine restore yapmadan önce, data file diski arızalandığında, migration'da son kesme anında (cutover).

Dikkat

NORECOVERY veritabanını RESTORING durumuna alır ve kullanıcı erişimi biter; yanlış veritabanında çalıştırma. Restore'u WITH REPLACE ile tail-log almadan yapmak son log yedeğinden sonraki işlemleri kalıcı olarak siler. NO_TRUNCATE ile alınan yedek hasarlı metadata içerebilir; restore sonrası DBCC CHECKDB çalıştır. SIMPLE recovery'de tail-log alınamaz.

DBAtlas'ta aç →

İlgili