Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Detail
| Atribut | Nilai |
|---|---|
| Nama Produk | SQL Server |
| ID Peristiwa | 7105 |
| Sumber Kejadian | MSSQLSERVER |
| Komponen | SQLEngine |
| Nama Simbolis | TXT_PGNOTEXIST |
| Teks Pesan | ID Database %d, Halaman %S_PGID, slot %d untuk simpul tipe data LOB tidak ada. Ini biasanya disebabkan oleh transaksi yang dapat membaca data yang tidak dikomit di halaman data. Jalankan DBCC CHECKTABLE |
Penjelasan
Kueri mungkin mengalami Msg 7105 saat data Objek Besar (LOB) yang direferensikan oleh baris halaman database tidak dapat diakses.
Karena kesalahan ini adalah Tingkat Keparahan 22, koneksi dihentikan oleh server. Pesan kesalahan ini juga ditulis ke dalam file SQL ERRORLOG dan Log Peristiwa Aplikasi Windows dengan EventID=7105.
Kemungkinan penyebab
Kesalahan ini dapat terjadi karena salah satu alasan berikut:
- Masalah kerusakan database ada dalam halaman database atau di dalam halaman LOB menyusun referensi halaman database.
- Kueri yang mengalami kegagalan menggunakan
READ UNCOMMITTED ISOLATION LEVELpetunjuk atauNOLOCKkueri. - Ada masalah dalam Mesin SQL Server yang menyebabkan kueri gagal dengan kesalahan ini.
Lihat bagian Resolusi dan Informasi selengkapnya untuk menentukan apa penyebab masalah spesifik Anda dan solusi yang sesuai.
Tindakan pengguna
Seperti yang ditunjukkan pesan, langkah pertama yang harus Anda ambil adalah menjalankan
DBCC CHECKDBdatabase atauDBCC CHECKTABLEterhadap tabel tempat masalah ditemui.ID database disediakan dalam pesan.
Untuk mengetahui tabel yang terpengaruh dengan tepat tanpa menjalankan
DBCC CHECKDB, Anda harus mencari tahu tabel apa yang diakses oleh kueri yang mengalami kesalahan. Salah satu metodenya adalah menggunakan SQL Profiler untuk melacak kueri. Namun, di SQL Server 2008 (10.0.x) dan SQL Server 2008 (10.0.x) R2 Anda mungkin dapat menemukan kueri menggunakan sesi System_health Extended Events. Lihat tautan ini untuk informasi selengkapnya tentang cara menggunakan sesi system_health: Gunakan Sesi system_health.Seperti halnya masalah konsistensi database apa pun, Anda dapat mengatasi kesalahan ini dengan memulihkan dari Cadangan bagus yang diketahui yang tidak berisi masalah ini.
Namun, jika Anda tidak dapat memulihkan dari Cadangan, ikuti rekomendasi untuk
DBCC CHECKDBatauDBCC CHECKTABLEuntuk memperbaiki kesalahan ini. Ada kemungkinan bahwa ini akan mengakibatkan hilangnya data. Untuk informasi selengkapnya tentang menggunakan CHECKDB dan penyebab masalah kerusakan database, lihat artikel: Cara memecahkan masalah kesalahan konsistensi database yang dilaporkan oleh DBCC CHECKDB.
Ada kemungkinan kesalahan ini ditemui karena kueri yang mengakses tabel menggunakan tingkat
READ UNCOMMITTEDisolasi atauNOLOCKpetunjuk kueri (juga dikenal sebagai bacaan kotor).Jika
DBCC CHECKDBatauDBCC CHECKTABLEtidak menunjukkan kesalahan yang terkait dengan tabel ini dan data LOB, maka penyebab paling mungkin adalah penggunaan bacaan dedirty. Jika ini masalahnya untuk aplikasi Anda, Anda harus menghindari penggunaan baca kotor atau mencoba kembali kueri.Jika Anda menemukan ini adalah penyebab kesalahan, tidak ada masalah konsistensi database aktual.
Informasi selengkapnya
Jika kerusakan database adalah penyebab masalah ini, maka DBCC CHECKDB dan/atau DBCC CHECKTABLE harus melaporkan kesalahan. Namun, perintah ini tidak akan melaporkan Msg 7105. Kesalahan yang Anda temui dari CHECKDB akan tergantung pada apa yang rusak dalam referensi ke struktur LOB atau struktur LOB itu sendiri.
Jika baris halaman database tidak mereferensikan halaman LOB yang valid dengan benar, Anda mungkin melihat kesalahan seperti ini:
Msg 8929, Tingkat 16, Status 1, Baris 1
ID Objek 2137058649, ID indeks 0, ID partisi 72057594038910976, ID unit alokasi 72057594039828480 (ketik data Dalam baris): Kesalahan yang ditemukan dalam data di luar baris dengan ID 131203072 dimiliki oleh catatan data yang diidentifikasi oleh RID = (1:179:1)
Msg 8964, Tingkat 16, Status 1, Baris 1
Kesalahan tabel: ID Objek 2137058649, ID indeks 0, 72057594038910976 ID partisi, 72057594039894016 ID unit alokasi (ketik data LOB). Simpul data di luar baris di halaman (1:177), slot 1, ID teks 131203072 tidak dirujuk.
Msg 8965, Tingkat 16, Status 1, Baris 1
Kesalahan tabel: ID Objek 2137058649, ID indeks 0, 72057594038910976 ID partisi, 72057594039894016 ID unit alokasi (ketik data LOB). Simpul data di luar baris di halaman (255:177), slot 1, ID teks 131203072 dirujuk oleh halaman (1:179), slot 1, tetapi tidak terlihat dalam pemindaianSkenario yang berbeda untuk masalah dapat mengakibatkan kombinasi kesalahan yang berbeda. Dalam contoh ini:
Halaman Database 1:179, Slot 1 mereferensikan halaman LOB yang bukan halaman yang valid dalam database (halaman 255:177). Halaman (1:177) adalah halaman LOB yang valid tetapi tidak pernah dirujuk oleh halaman database apa pun. Jadi dalam situasi ini, masalahnya adalah bahwa baris di Slot 1 halaman 1:179 mereferensikan halaman 255:177 alih-alih 1:177.
Kunci untuk menentukan apakah
DBCC CHECKDBkesalahan terkait dengan masalah halaman LOB dengan mencari frasa 'data di luar baris' dan 'ketik data LOB'.Msg 8929 adalah kesalahan yang terkait dengan halaman database yang mereferensikan halaman LOB.
Msg 8964 adalah kesalahan yang menunjukkan halaman LOB tidak dirujuk oleh halaman database apa pun.
Msg 8965 adalah kesalahan yang menunjukkan halaman LOB dirujuk oleh halaman database tetapi tidak ada sebagai halaman yang validDalam banyak situasi yang melibatkan jenis kesalahan ini, perbaikan akan mengakibatkan penghapusan baris yang menunjuk ke data LOB dan data LOB itu sendiri. Algoritma perbaikan hanya akan mencoba menghapus fragmen LOB yang memengaruhi baris database yang dimaksud tetapi tidak dapat dijamin dalam semua situasi tergantung pada apa yang rusak dalam LOB 'struktur pohon'.
Dalam contoh yang diperlihatkan di sini, pesan yang dikembalikan oleh CHECKTABLE menggunakan
REPAIR_ALLOW_DATA_LOSSterlihat seperti:Perbaikan: Rekaman yang dihapus untuk ID objek 2137058649, ID indeks 0, ID partisi 72057594038910976, ID unit alokasi 72057594039828480 (ketik data Dalam baris), pada halaman (1:179), slot 1. Indeks akan dibangun kembali.
Perbaikan: Kolom data di luar baris yang dihapus dengan ID 131203072, untuk 2137058649 ID objek, ID indeks 0, ID partisi 72057594038910976, ID unit alokasi 72057594039894016 (ketik data LOB) di halaman (1:177), slot 1.
Msg 8929, Tingkat 16, Status 1, Baris 1
ID Objek 2137058649, ID indeks 0, ID partisi 72057594038910976, ID unit alokasi 72057594039828480 (ketik data Dalam baris): Kesalahan yang ditemukan dalam data di luar baris dengan ID 131203072 dimiliki oleh catatan data yang diidentifikasi oleh RID = (1:179:1)
Kesalahan telah diperbaiki.
Msg 8964, Tingkat 16, Status 1, Baris 1
Kesalahan tabel: ID Objek 2137058649, ID indeks 0, 72057594038910976 ID partisi, 72057594039894016 ID unit alokasi (ketik data LOB). Simpul data di luar baris di halaman (1:177), slot 1, ID teks 131203072 tidak dirujuk.
Kesalahan telah diperbaiki.
Msg 8965, Tingkat 16, Status 1, Baris 1
Kesalahan tabel: ID Objek 2137058649, ID indeks 0, 72057594038910976 ID partisi, 72057594039894016 ID unit alokasi (ketik data LOB). Simpul data di luar baris di halaman (255:177), slot 1, ID teks 131203072 dirujuk oleh halaman (1:179), slot 1, tetapi tidak terlihat dalam pemindaian.
Tidak dapat memperbaiki kesalahan iniPesan terakhir yang mengatakan
Could not repair this errormenyesatkan. Kesalahan diperbaiki karena baris halaman database yang menunjuk ke halaman yang tidak valid (255:177) dihapus.