Mencoba mengambil halaman logis (5: 65424) dalam database 2 gagal

11

Saya mendapatkan yang berikut SqlExceptiontentang memanggil prosedur tersimpan:

Mencoba mengambil halaman logis (5: 65424) dalam database 2 gagal. Itu milik unit alokasi 7349876362857938944 bukan untuk 4899918190390149120.

System.Data.SqlClient.SqlException terjadi
Message = "Mencoba mengambil halaman logis (5: 65424) dalam database 2 gagal. Itu milik unit alokasi 7349876362857938944 bukan untuk 4899918190390149120.

Sumber = ". Penyedia Data SqlClient Bersih"
ErrorCode = -2146232060
Kelas = 21
LineNumber = 257
Angka = 605
Prosedur = "ispDisplayCount"
Server = "10.10.1.1"
Negara = 3

Apa artinya pengecualian ini? Apakah ada resolusi untuk masalah di atas?

Meskipun database yang dirujuk dalam kesalahan di atas menunjukkan tempdb, kesalahan serupa yang merujuk pada Pesan 605, dapat diperbaiki menggunakan jawaban di bawah ini.

Msg 605, Level 21, Negara 3, Baris 1
Mencoba mengambil halaman logis (1: 8687634) dalam database 7 gagal. Itu milik unit alokasi 72057594364821504 bukan untuk 72057594052476928.

Parag Meshram
sumber

Jawaban:

11

Jika ID database yang ditunjukkan oleh pesan kesalahan adalah 2, database yang terpengaruh adalah tempdb. Salah satu metode untuk memperbaiki jenis korupsi ini di tempdb adalah dengan cukup memulai kembali contoh SQL Server. Untuk ID basis data selain dari 2, ikuti rekomendasi di bawah ini.

Anda mungkin perlu memulihkan dari cadangan, namun coba ini:

Sebagai anggota dari peran sysadmin, jalankan DBCC PAGE (2, 5, 65424, 3);dan cari Metadata: IndexIdnilainya.

  • Jika 0(tumpukan) atau 1(indeks berkerumun) Anda perlu mengembalikan dari cadangan.
  • Jika tidak 0 atau 1, Anda bisa membangun kembali indeks yang tidak berkerumun.

Jalankan perintah DBCC, dan beri tahu kami apa yang Anda temukan. Periksa https://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/ untuk perincian tentang DBCC PAGEperintah

Matt M
sumber
10

Basis data Anda rusak. Saatnya memulihkan dari cadangan yang baik. Jika Anda tidak memiliki cadangan, saatnya mempelajari tentang Pentingnya Menguji Rencana Pemulihan Anda . Investigasi terhadap keandalan perangkat keras Anda juga dijamin, perhatikan peringatan dan kesalahan dalam log sistem.

Remus Rusanu
sumber
9

Kesalahan menunjukkan bahwa database Anda rusak. Berita baiknya adalah bahwa basis data ID 2 menunjukkan ini adalah basis data tempdb, jadi memperbaiki ini mudah - cukup mulai ulang contoh basis data.

Setelah Anda memulai kembali instance, Anda harus mencari tahu mengapa korupsi terjadi. Mulai dengan menjalankan chkdskpada drive tempat file bermasalah aktif. Selanjutnya Anda harus melihat penyimpanan itu sendiri dan melihat apakah ada masalah di sana. Bisa jadi masalah disk fisik, bisa menjadi driver kartu HBA atau RAID, dll.

mrdenny
sumber
Denny, apakah Anda menemukan melakukan pemeriksaan kesehatan RAM akan bermanfaat juga? Pernahkah Anda melihat halaman yang rusak di RAM juga menerjemahkan ke korupsi di disk?
Ali Razeghi
1
Jika ada RAM stick buruk yang dapat menyebabkan halaman dilaporkan kotor. Kemungkinannya jauh lebih tinggi bahwa itu adalah masalah dengan subsistem disk daripada memori. Itu akan menjadi tempat berikutnya untuk melihat apakah disk sebenarnya baik-baik saja.
mrdenny
2

Saya bisa menyelesaikan ini dengan membersihkan cache SQL:

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO

Rupanya me-restart layanan SQL akan memiliki pengaruh yang sama.

(via Made By SQL , direproduksi di sini untuk membantu orang lain!)

8128
sumber
1

Dalam kasus saya, memotong dan mengisi kembali data dalam tabel terkait adalah solusinya.

Kemungkinan besar data di dalam tabel rusak.

xameeramir
sumber
1

Apa yang akan Anda dengar dari banyak orang adalah " database rusak, Anda harus mengembalikan " tanpa bahkan menyarankan Anda mengambil beberapa menit untuk melakukan beberapa hal berikut; tinjau log Anda, cari tahu ketika masalah pertama kali terjadi, kesalahan yang mendahului baris itu, periksa database / tabel halaman milik

Dalam kasus saya kesalahan ini didahului oleh;

Tidak dapat menemukan entri indeks dalam ID indeks 9, dari tabel 629577281, dalam database 'XYZ'. Indeks yang ditunjukkan rusak atau ada masalah dengan paket pembaruan saat ini

Solusinya adalah untuk melacak indeks yang dimaksud dan untuk sementara menghapusnya.

Saya kemudian menemukan tautan Microsoft ini yang menjelaskan masalah persis saya dan menawarkan tautan solusi

Semoga ini bisa membantu orang lain di masa depan

daffyjeje
sumber