it-swarm.asia

SQL Server menunjukkan database dalam pemulihan

Hari ini, setelah listrik mati, satu basis data (dengan Pemulihan: penuh) menunjukkan "Dalam Pemulihan" di SSMS. Begitu:

myDatabase (Dalam pemulihan) (status database: pemulihan, Shutdown)

Setelah selesai, "proses pemulihan" database menunjukkan nama myDatabase tanpa "(Dalam pemulihan)". Saya pikir masalahnya sudah terpecahkan, tetapi ternyata tidak.

Ketika saya memulai aplikasi yang menggunakan database itu, teks tambahan "(Dalam pemulihan)" muncul lagi di sebelah nama database saya.

Saya menunggu sampai "proses pemulihan" selesai dan kemudian saya mengambil database offline dan membawanya kembali online.

Saya me-restart server, me-restart komputer dan ketika aplikasi saya berjalan teks tambahan muncul lagi. Dalam SQL Server log pesan "Memulai database 'myDatabase'" muncul beberapa kali. Tampaknya database berfungsi karena saya dapat memasukkan data, tetapi keadaan menunjukkan bahwa sesuatu itu terjadi.

Log server tidak menunjukkan sesuatu yang menarik. Satu-satunya hal yang abnormal adalah bahwa saya memiliki 30 entri "Memulai database 'myDatabase'".

Saya tahu bahwa ketika server mulai setiap database melewati pemulihan sebelum siap digunakan. Tetapi dalam kasus saya, database online kemudian menunjukkan "myDatabase (Dalam pemulihan)". Jika saya menutup aplikasi, database masuk ke Status: Normal. Ini membuatku gila.

Saya bahkan telah menginstal instance baru SQL Server, dan meletakkan database lama "myDatabase" di atasnya. Masalahnya masih terjadi.

Ketika saya menjalankan kueri ini:

SELECT databasepropertyex('nyDatabase', 'STATUS')

Ini menunjukkan pemulihan, online, tersangka dan kembali ke online dan kemudian pulih dan seterusnya.

23
Andres

Jawaban wiki komunitas awalnya dibiarkan sebagai edit untuk pertanyaan oleh penulisnya:

Masalahnya adalah properti database AutoClose diaktifkan.

Solusinya adalah menetapkan AutoClose menjadi false.

2
user126897

Saya tidak yakin apakah ini akan membantu menyelesaikan masalah, tetapi Anda dapat mencobanya.

Lari:

RESTORE DATABASE YourDatabase WITH RECOVERY

Lihat apakah di atas membawa database keluar dari mode pemulihan. Jika tidak maka masalahnya mungkin sesuatu yang lain.

Bisakah Anda mencoba perintah di bawah ini dan melihat apakah database rusak?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

Jika mendeteksi korupsi, maka Anda mungkin ingin memperbaiki database menggunakan DBCC CHECKDB

16
RK Kuppala

Setiap kali Anda membawa database secara online, itu akan melalui proses pemulihan. Saya agak bingung dengan ungkapan Anda tentang masalahnya. Apakah Anda melihat basis data masuk ke pemulihan kapan saja selain ketika basis data sedang offline (baik dari kegagalan daya asli Anda atau karena Anda membawanya offline dan kemudian online lagi)? Jika demikian, basis data akan offline karena beberapa alasan lain. Terbaik untuk memeriksa log SQL server untuk melihat apa yang terjadi.

Anda juga harus memeriksa log peristiwa Windows untuk sesuatu seperti kerusakan disk. Basis data tidak boleh memulai dan masuk ke pemulihan selama operasi normal.

6
Ben Thul