Kami memiliki basis data yang sangat besar (~ 6TB), yang file log transaksinya dihapus (sementara SQL Server dimatikan. Kami telah mencoba:
- Melepaskan dan memasang kembali basis data; dan
- Membatalkan penghapusan file log transaksi
... tapi tidak ada yang berhasil sejauh ini.
Kami sedang menjalankan:
ALTER DATABASE <dbname> REBUILD
LOG ON (NAME=<dbname>,FILENAME='<logfilepath>')
... tetapi mengingat ukuran database, ini mungkin akan memakan waktu beberapa hari untuk selesai.
Pertanyaan
Apakah ada perbedaan antara perintah di atas dan yang berikut?
DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS)
Haruskah kita mengeksekusi
REPAIR_ALLOW_DATA_LOSS
?
Perlu dicatat bahwa data tersebut berasal dari sumber lain sehingga database dapat dibangun kembali, namun kami menduga akan jauh lebih cepat untuk memperbaiki database daripada memasukkan kembali semua data lagi.
Memperbarui
Bagi mereka yang mempertahankan skor: ALTER DATABASE/REBUILD LOG
perintah selesai setelah sekitar 36 jam dan dilaporkan:
Peringatan: Log untuk database 'dbname' telah dibangun kembali. Konsistensi transaksional telah hilang. Rantai RESTORE rusak, dan server tidak lagi memiliki konteks pada file log sebelumnya, jadi Anda perlu tahu apa itu.
Anda harus menjalankan DBCC CHECKDB untuk memvalidasi konsistensi fisik. Basis data telah dimasukkan ke mode dbo-only. Saat Anda siap membuat database tersedia untuk digunakan, Anda perlu mengatur ulang opsi database dan menghapus file log tambahan apa pun.
Kami kemudian menjalankan DBCC CHECKDB
(mengambil sekitar 13 jam) yang berhasil. Anggap saja kita semua telah belajar pentingnya cadangan basis data (dan memberikan manajer proyek akses ke server ...).