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 disk (kesalahan perangkat keras tertentu)

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

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

  • Kueri harus membaca 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 gagal dengan kesalahan 824, hingga batas 1.000 baris. Tabel berikut ini memperlihatkan kesalahan yang dicatat di kolom event_type tabel suspect_pages.

    Deskripsi kesalahan nilai event_type
    Kesalahan 823 yang disebabkan oleh kesalahan CRC sistem operasi atau kesalahan 824 selain checksum buruk atau halaman robek (misalnya, ID halaman yang buruk) 1
    Checksum buruk 2
    Halaman robek 3
    Dipulihkan (Halaman dipulihkan setelah ditandai 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 untuk setiap kesalahan 824, untuk menunjukkan bahwa kesalahan telah terjadi, dan penghitung kesalahan bertahap. Jika halaman memiliki kesalahan setelah diperbaiki dengan diperbaiki, dipulihkan, atau dibatalkan alokasinya , jumlah number_of_errors nya bertambah dan kolom last_update diperbarui

    • Setelah halaman yang tercantum diperbaiki oleh pemulihan atau operasi perbaikan, operasi memperbarui baris suspect_pages untuk menunjukkan bahwa halaman diperbaiki (event_type = 5) atau 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 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 dipulihkan atau diperbaiki, atau baris yang memiliki nilai last_update lama.

    Untuk memantau aktivitas pada tabel suspect_pages, Anda bisa menggunakan Kelas Peristiwa Halaman Data Tersangka Database. Baris terkadang ditambahkan ke tabel suspect_pages 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

Izin

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)