Bagikan melalui


MSSQLSERVER_7105

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 LEVEL petunjuk atau NOLOCK kueri.
  • 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

  1. Seperti yang ditunjukkan pesan, langkah pertama yang harus Anda ambil adalah menjalankan DBCC CHECKDB database atau DBCC CHECKTABLE terhadap 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 CHECKDB atau DBCC CHECKTABLE untuk 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.

  2. Ada kemungkinan kesalahan ini ditemui karena kueri yang mengakses tabel menggunakan tingkat READ UNCOMMITTED isolasi atau NOLOCK petunjuk kueri (juga dikenal sebagai bacaan kotor).

    • Jika DBCC CHECKDB atau DBCC CHECKTABLE tidak 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 pemindaian

  • Skenario 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 CHECKDB kesalahan 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 valid

    Dalam 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_LOSS terlihat 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 ini

    Pesan terakhir yang mengatakan Could not repair this error menyesatkan. Kesalahan diperbaiki karena baris halaman database yang menunjuk ke halaman yang tidak valid (255:177) dihapus.