İşlem günlüğü dosyası silinmiş olan çok büyük bir veritabanımız (~ 6 TB) var (SQL Server kapatılırken.
- Veritabanının sökülmesi ve yeniden takılması; ve
- İşlem günlüğü dosyasının kaydını silme
... ama şimdiye kadar hiçbir şey işe yaramadı.
Şu anda çalışıyoruz:
ALTER DATABASE <dbname> REBUILD
LOG ON (NAME=<dbname>,FILENAME='<logfilepath>')
... ancak veritabanının boyutu göz önüne alındığında, bu işlemin tamamlanması birkaç gün sürecektir.
Sorular
Yukarıdaki komut ile aşağıdaki komut arasında bir fark var mı?
DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS)
Bunun
REPAIR_ALLOW_DATA_LOSS
yerine idam mı etmeliyiz ?
Verilerin diğer kaynaklardan elde edildiğine dikkat çekmek önemlidir, bu nedenle veritabanını yeniden oluşturabilir, ancak veritabanını onarmanın tüm verileri yeniden yerleştirmekten çok daha hızlı olacağını düşünüyoruz.
Güncelleştirme
Skoru olanlar için: ALTER DATABASE/REBUILD LOG
Komut 36 saat sonra tamamlandı ve şunları bildirdi:
Uyarı: 'dbname' veritabanı günlüğü yeniden oluşturuldu. İşlem tutarlılığı kayboldu. RESTORE zinciri koptu ve sunucunun önceki günlük dosyalarında artık bağlamı olmadığından, ne olduklarını bilmeniz gerekecek.
Fiziksel tutarlılığı doğrulamak için DBCC CHECKDB çalıştırmalısınız. Veritabanı yalnızca dbo moduna geçirildi. Veritabanını kullanıma hazır hale getirmeye hazır olduğunuzda, veritabanı seçeneklerini sıfırlamanız ve fazladan günlük dosyalarını silmeniz gerekir.
Sonra DBCC CHECKDB
başarılı bir (yaklaşık 13 saat sürdü) koştu . Diyelim ki hepimiz veritabanı yedeklemelerinin önemini öğrendik (ve proje yöneticilerine sunucuya erişim izni veriyoruz ...).