it-swarm.asia

SQL Server 2008 R2 (Suspect) mode - cara memperbaiki?

Saya memiliki database SQL Server 2008 R2 dalam mode Suspect. Saya mencoba memperbaikinya dengan menjalankan kueri ini:

EXEC sp_resetstatus ‘yourDBname’;
ALTER DATABASE yourDBname SET EMERGENCY
DBCC checkdb(’yourDBname’)
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB (’yourDBname’, REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE yourDBname SET MULTI_USER

Tetapi hasil perbaikan adalah pesan ini:

Warning: You must recover this database prior to access.
Msg 8921, Level 16, State 1, Line 5
Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent. Check previous errors.
Warning: The log for database 'ServeDB' has been rebuilt. Transactional consistency has been lost. The RESTORE chain was broken, and the server no longer 
has context on the previous log files, so you will need to know what they were. You should run DBCC CHECKDB to validate physical consistency. The database has 
been put in dbo-only mode. When you are ready to make the database available for use, you will need to reset database options and delete any extra log files.
Msg 8921, Level 16, State 1, Line 9
Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent. Check previous errors.

Bagaimana cara memperbaiki database sepenuhnya? Perbaikan yang saya buat ini, hanya berfungsi selama beberapa hari, kemudian basis data kembali ke mode Tersangka ...

5
Vytas999

Saya mengalami masalah serupa. Namun, saya tidak bisa mendapatkan database dari tersangka karena cadangan juga tersangka. Saya menggunakan fungsionalitas ekspor di SSMS untuk memindahkan tabel dan data ke database kosong baru.

Namun ini tidak memindahkan semua prosedur, tampilan, fungsi, dll yang tersimpan. Saya memiliki salinan RedGate SQL Compare (yang saya sangat rekomendasikan kepada siapa pun yang bekerja dengan skema SQL secara teratur) yang menangani semua migrasi struktur. Jadi itu membuat prosesnya tidak menyakitkan. RedGate memiliki uji coba 14 hari pada perangkat lunak mereka jika Anda perlu menggunakannya.

Jika Anda hanya memiliki tabel, atau sejumlah kecil prosedur, tampilan, dll., Anda dapat menggunakan fungsi "Hasilkan Script" SSMS untuk membuat skrip kreasi untuk item ini, kemudian jalankan pada DB baru Anda.

RedGate's SQL Membandingkan: http://www.red-gate.com/products/sql-development/sql-compare/

5
AJ Piscitelli

Anda tidak dapat memperbaiki basis data ini, dan perbaikan yang berpotensi Anda lakukan belum selesai. Anda harus memastikan untuk memahami mengapa database Anda menjadi rusak - periksa sistem disk Anda karena itulah penyebab yang paling mungkin.

Kemudian pulihkan database Anda dari cadangan - tetapi pastikan untuk menjalankan DBCC CHECKDB pada cadangan itu untuk memastikannya tidak rusak sendiri.

DBCC CHECKDB dengan REPAIR_ALLOW_DATA_LOSS adalah pilihan terakhir yang harus Anda kunjungi. Sebelum itu, Anda harus mengembalikan cadangan yang valid. Setelah Anda menggunakan REPAIR_ALLOW_DATA_LOSS, jangan berharap database Anda kembali hidup secara ajaib - kemungkinan besar, kerusakan yang tidak dapat diperbaiki telah terjadi - terutama dalam kasus ini karena ia mengeluh tentang korupsi tabel sistem.

7

Sudahkah Anda mencoba apa yang direkomendasikan oleh Paul Randal? Membuat, melepaskan, melampirkan kembali, dan memperbaiki basis data tersangka

  1. Buat database dummy baru dengan tata letak file yang sama persis dan sedekat mungkin dengan ukuran file dari database terpisah
  2. Shutdown SQL Server
  3. Tukar file database yang rusak
  4. Mulai ulang SQL Server
  5. Gunakan perbaikan mode darurat
6