Bagikan melalui


Mengelola Tabel suspect_pages (SQL Server)

Berlaku untuk:SQL Server

Topik ini menjelaskan cara mengelola tabel suspect_pages di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Tabel suspect_pages digunakan untuk mempertahankan informasi tentang halaman tersangka, dan relevan dalam membantu memutuskan apakah pemulihan diperlukan. Tabel suspect_pages berada di database msdb.

Halaman dianggap "tersangka" ketika Mesin Database SQL Server mengalami salah satu kesalahan berikut saat mencoba membaca halaman data:

  • Kesalahan 823 yang disebabkan oleh pemeriksaan redundansi siklik (CRC) yang dikeluarkan oleh sistem operasi, seperti kesalahan pada disk (kesalahan perangkat keras tertentu)

  • Kesalahan 824, seperti halaman robek (kesalahan logis apa pun)

ID tiap halaman yang dicurigai dicatat dalam tabel suspect_pages. Mesin Database merekam halaman tersangka yang ditemui selama pemrosesan reguler, seperti berikut ini:

  • Sebuah kueri perlu membaca sebuah halaman.

  • Selama operasi DBCC CHECKDB.

  • Selama operasi pencadangan.

Tabel suspect_pages juga diperbarui seperlunya selama operasi pemulihan, operasi perbaikan DBCC, atau operasi drop database.

Dalam Topik Ini

Sebelum Anda mulai

Rekomendasi

  • Kesalahan yang Direkam dalam Tabel suspect_pages

    Tabel suspect_pages berisi satu baris per halaman yang mengalami kesalahan 824, maksimal 1.000 baris. Tabel berikut ini menunjukkan kesalahan yang dicatat di kolom event_type dari tabel suspect_pages.

    Deskripsi kesalahan event_type nilai
    Kesalahan 823 yang disebabkan oleh kesalahan CRC sistem operasi atau kesalahan 824 selain checksum yang buruk atau halaman robek (misalnya, halaman dengan ID buruk) 1
    Checksum buruk 2
    Halaman yang robek 3
    Dipulihkan (Halaman dipulihkan setelah ditandai sebagai buruk) 4
    Diperbaiki (DBCC memperbaiki halaman) 5
    Dibatalkan alokasinya oleh DBCC 7

    Tabel suspect_pages juga merekam kesalahan sementara. Sumber kesalahan sementara termasuk kesalahan I/O (misalnya, kabel terputus) atau halaman yang sementara gagal dalam pengujian checksum berulang.

  • Cara Mesin Database Memperbarui Tabel suspect_pages

    Mesin Database mengambil tindakan berikut pada tabel suspect_pages :

    • Jika tabel tidak penuh, tabel diperbarui pada setiap kesalahan dengan kode 824, untuk menunjukkan bahwa kesalahan telah terjadi, dan penghitung kesalahan dinaikkan. Jika sebuah halaman memiliki kesalahan setelah diperbaiki, dipulihkan, atau dibatalkan alokasinya, jumlah number_of_errors bertambah dan kolom last_update diperbarui.

    • Setelah halaman yang tercantum dipulihkan atau diperbaiki oleh operasi perbaikan, operasi tersebut memperbarui baris suspect_pages untuk menunjukkan bahwa halaman telah diperbaiki (event_type = 5) atau telah dipulihkan (event_type = 4).

    • Jika pemeriksaan DBCC dijalankan, pemeriksaan menandai halaman bebas kesalahan apa pun sebagai diperbaiki (event_type = 5) atau dibatalkan alokasinya (event_type = 7).

  • Pembaruan Otomatis ke Tabel suspect_pages

    Mitra pencerminan database atau replika ketersediaan AlwaysOn memperbarui tabel suspect_pages setelah upaya untuk membaca halaman dari file data gagal karena salah satu alasan berikut.

    • Kesalahan 823 yang disebabkan oleh kesalahan CRC sistem operasi.

    • Kesalahan 824 (kerusakan logis seperti halaman robek).

    Tindakan berikut ini juga secara otomatis memperbarui baris dalam tabel suspect_pages .

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS memperbarui tabel suspect_pages untuk menunjukkan setiap halaman bahwa tabel tersebut telah dibatalkan alokasinya atau diperbaiki.

    • PEMULIHAN lengkap, file, atau halaman menandai entri halaman sebagai telah dipulihkan.

    Tindakan berikut ini secara otomatis menghapus baris dari tabel suspect_pages .

    • MENGUBAH FILE PENGHAPUSAN DATABASE

    • JATUHKAN DATABASE

  • Peran Pemeliharaan Administrator Database

    Administrator database bertanggung jawab untuk mengelola tabel, terutama dengan menghapus baris lama. Tabel suspect_pages berukuran terbatas, dan jika terisi, kesalahan baru tidak dicatat. Untuk mencegah tabel ini terisi, administrator database atau administrator sistem harus menghapus entri lama secara manual dari tabel ini dengan menghapus baris. Oleh karena itu, kami sarankan Anda secara berkala menghapus atau mengarsipkan baris yang memiliki event_type yang dipulihkan atau diperbaiki, atau baris yang memiliki nilai last_update yang lama.

    Untuk memantau aktivitas pada tabel suspect_pages, Anda bisa menggunakan Kelas Peristiwa Halaman Data Tersangka pada Basis Data. Di tabel suspect_pages, baris terkadang ditambahkan karena kesalahan sementara. Namun, jika banyak baris ditambahkan ke tabel, masalah mungkin ada dengan subsistem I/O. Jika Anda melihat peningkatan mendadak dalam jumlah baris yang ditambahkan ke tabel, kami sarankan Anda menyelidiki kemungkinan masalah di subsistem I/O Anda.

    Administrator database juga bisa menyisipkan atau memperbarui rekaman. Misalnya, memperbarui baris mungkin berguna ketika administrator database tahu bahwa halaman tersangka tertentu sebenarnya utuh, tetapi ingin mempertahankan rekaman untuk sementara waktu.

Keamanan

Perizinan

Siapa pun yang memiliki akses ke msdb dapat membaca data dalam tabel suspect_pages . Siapa pun dengan izin UPDATE pada tabel suspect_pages dapat memperbarui rekamannya. Anggota db_owner peran database tetap pada msdb atau peran server tetap sysadmin dapat menyisipkan, memperbarui, dan menghapus rekaman.

Menggunakan SQL Server Management Studio

Untuk mengelola tabel suspect_pages

  1. Di Object Explorer, sambungkan ke instans Mesin Database SQL Server, perluas instans tersebut, lalu perluas Database.

  2. Perluas Database Sistem, perluas msdb, perluas Tabel, lalu perluas Tabel Sistem.

  3. Perluas dbo.suspect_pages dan klik kanan Edit 200 Baris Teratas.

  4. Di jendela kueri, edit, perbarui, atau hapus baris yang Anda inginkan.

Menggunakan T-SQL

Untuk mengelola tabel suspect_pages

  1. Sambungkan ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan. Contoh ini menghapus beberapa baris dari suspect_pages tabel.

-- Delete restored, repaired, or deallocated pages.  
DELETE FROM msdb..suspect_pages  
   WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);  
GO  
  

Contoh ini mengembalikan halaman buruk dalam suspect_pages tabel.

-- Select nonspecific 824, bad checksum, and torn page errors.  
SELECT * FROM msdb..suspect_pages  
   WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);  
GO  
  

Lihat Juga

DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (T-SQL)
Pulihkan Halaman (SQL Server)
suspect_pages (T-SQL)