Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Berurusan dengan kesalahan tingkat keparahan tinggi di SQL Server

Dalam artikel saya sebelumnya tentang SQL Server Agent Alerts, saya memberikan petunjuk langkah demi langkah tentang cara mengatur dan mengkonfigurasi SQL Agent alerts untuk kesalahan tingkat tinggi 19-25 serta kesalahan 825. Pada artikel ini, saya akan diskusikan kesalahan ini secara rinci, dan bagikan apa yang harus Anda lakukan jika itu terjadi di lingkungan Anda.

Kesalahan dengan tingkat keparahan 19 atau lebih tinggi menghentikan penyelesaian batch saat ini. Kesalahan dengan tingkat keparahan 20 dan lebih tinggi adalah kesalahan fatal dan mengakhiri koneksi klien saat ini. Kesalahan ini juga dapat mempengaruhi semua proses dalam database. Kesalahan fatal persis seperti namanya:proses yang sedang berjalan dihentikan dan koneksi klien ditutup.

Kesalahan Tingkat Keseriusan 19

Kesalahan tingkat keparahan 19 adalah kesalahan karena kurangnya sumber daya. Ini berarti bahwa batas internal (yang tidak dapat Anda konfigurasikan) telah terlampaui dan menyebabkan kumpulan saat ini berakhir. Kesalahan ini jarang terjadi dan hanya sedikit yang dapat Anda lakukan untuk memperbaiki masalah ini. Jika terjadi kesalahan tingkat keparahan 19, Anda harus menghubungi penyedia dukungan utama Anda; biasanya, itu adalah Microsoft.

Selama bertahun-tahun saya bekerja dengan SQL Server, saya tidak dapat mengingat insiden apa pun di mana kesalahan 19 tingkat keparahan dihasilkan. Bahkan mencari di Bing, saya kesulitan menemukan kemunculan kesalahan; beberapa referensi yang saya temukan terkait dengan versi awal SQL Server, dan merujuk bug di dalam SQL Server itu sendiri.

Kesalahan Tingkat Keparahan 20

Kesalahan tingkat keparahan 20 adalah kesalahan fatal dalam proses saat ini. Ini menunjukkan bahwa pernyataan mengalami masalah dan dihentikan. Karena ini hanya berdampak pada proses saat ini, sangat kecil kemungkinannya bahwa database itu sendiri telah rusak. Kesalahan ini terkait dengan pernyataan individual sehingga Anda perlu mengumpulkan seluruh pesan kesalahan dan menghubungi orang atau tim yang bertanggung jawab atas bagian kode tersebut. Ini bisa berupa in-house atau mungkin vendor aplikasi. Contoh kesalahannya adalah:

Galat:18056, Keparahan 20, Status:29
Klien tidak dapat menggunakan kembali sesi dengan SPID 123, yang telah disetel ulang untuk penyatuan koneksi.

Untuk kesalahan ini, saya akan menghubungi pengembang atau vendor aplikasi, karena kesalahan tersebut terkait dengan koneksi gabungan yang mengalami kesalahan saat mencoba mengatur ulang. Saya juga akan meninjau log SQL Server yang mungkin memiliki pesan kesalahan yang lebih rinci mengenai apa yang sebenarnya terjadi yang menyebabkan kesalahan.

Kesalahan Tingkat Keparahan 21

Kesalahan tingkat keparahan 21 adalah kesalahan fatal dalam database yang memengaruhi semua proses yang menggunakan database itu.

Saya telah melihat kesalahan ini terjadi ketika mencoba memulihkan database menggunakan fitur Perusahaan ke instans Edisi Standar, serta ketika database rusak dan pengguna mencoba mengakses halaman yang rusak. Contoh pesan kesalahan jenis ini adalah:

Kesalahan:605, Keparahan:21, Status 1
Berusaha mengambil halaman logis (1:8574233) dalam database 'DB_NAME' milik objek '0', bukan objek 'Table01'.

Saat mencoba memulihkan database yang menggunakan fitur Enterprise ke instans Edisi Standar, Anda harus menghapus fitur Enterprise terlebih dahulu. Misalnya, jika Anda menggunakan kompresi data atau mengubah pengambilan data, pertama-tama Anda harus berhenti menggunakan dan menghapus fitur tersebut dari database, mencadangkan database, lalu memulihkannya ke instans Edisi Standar. Anda dapat menggunakan sys.dm_db_persisted_sku_features DMV untuk memeriksa apakah Anda memiliki fitur khusus Perusahaan yang digunakan.

Untuk kesalahan korupsi, Anda harus menjalankan DBCC CHECKDB untuk menentukan tingkat korupsi dan pergi dari sana. Jika Anda beruntung, kesalahan akan berada dalam indeks nonclustered yang dapat Anda bangun kembali dan atasi masalah tersebut. Jika korupsi lebih parah, Anda bisa melihat operasi pemulihan. Untuk lebih memahami korupsi dan bagaimana menyelesaikan berbagai aspek korupsi, saya mendorong Anda untuk meninjau berbagai posting blog oleh Paul Randal. Paul memiliki seluruh kategori tentang korupsi yang dapat Anda lihat di sini:

  • http://www.sqlskills.com/blogs/paul/category/corruption/

Menjalankan DBCC CHECKDB sebagai bagian dari pekerjaan yang dijadwalkan secara rutin terhadap database Anda, sangat disarankan untuk mendeteksi korupsi sedini mungkin. Jika Anda tidak secara teratur memeriksa korupsi, maka Anda berisiko besar tidak dapat memulihkan data yang rusak.

Kesalahan 22 Tingkat Keseriusan

Kesalahan tingkat keparahan 22 adalah kesalahan fatal karena integritas tabel dicurigai, pada dasarnya menunjukkan bahwa tabel atau indeks yang ditentukan dalam pesan rusak. Korupsi terjadi dan sering terjadi. Pengalaman kami adalah bahwa sebagian besar korupsi terjadi karena masalah terkait subsistem I/O. Jika Anda mengalami kesalahan tingkat keparahan 22, Anda harus menjalankan DBCC CHECKDB untuk menentukan tingkat kerusakan. Contoh kesalahannya adalah:

Kesalahan:5180, Keparahan:22, Status:1
Tidak dapat membuka XYZ untuk ID file ## yang tidak valid dalam database. Tabel atau database mungkin rusak.

Jika kesalahan ada dalam indeks nonclustered, maka Anda bisa membangun kembali indeks dan memperbaiki korupsi. Jika kerusakan berada dalam indeks heap atau clustered, maka Anda perlu memulihkan database ke status yang konsisten.

Saya telah melihat laporan di mana korupsi ada di memori tetapi tidak di disk. Dalam hal ini, restart instance atau pengaturan database offline dan kemudian online akan mengatasi kesalahan.

Kesalahan Tingkat Keparahan 23

Kesalahan tingkat keparahan 23 adalah kesalahan fatal lainnya yang melaporkan bahwa database itu sendiri memiliki masalah integritas. Resolusinya mirip dengan kesalahan tingkat keparahan 22, di mana Anda harus segera menjalankan DBCC CHECKDB untuk menemukan tingkat kerusakan database sepenuhnya.

Tingkat korupsi terdeteksi mempengaruhi seluruh database. Ini bisa berupa kerusakan di dalam file data itu sendiri atau kerusakan di dalam file log. Rincian kesalahan akan mengarahkan Anda ke akar masalah. Misalnya, kesalahan berikut menunjukkan bahwa kami perlu memulihkan database kami atau mencoba membangun kembali log. Untuk konsistensi, saya akan memulihkan dari cadangan terbaru saya dan semua cadangan log transaksi yang tersedia.

Kesalahan:9004, Keparahan:23 Status:6
Terjadi kesalahan saat memproses log untuk database 'db_name'. Jika memungkinkan, pulihkan dari cadangan. Jika cadangan tidak tersedia, mungkin perlu untuk membangun kembali log.

Kesalahan 24 Tingkat Keseriusan

Kesalahan 24 tingkat keparahan adalah kesalahan fatal yang terkait dengan perangkat keras. Pesan ini akan terjadi karena beberapa jenis kegagalan media. Jenis kesalahan yang paling umum yang saya lihat terkait dengan masalah memori dan kesalahan I/O. Misalnya:

Kesalahan:832, Keparahan:24, Status:1
Halaman yang seharusnya konstan telah berubah (checksum yang diharapkan:, checksum aktual:, database , file , halaman ). Ini biasanya menunjukkan kegagalan memori atau kerusakan perangkat keras atau OS lainnya.

Ketika kesalahan seperti ini terjadi, Anda harus menghubungi tim dukungan sistem Anda untuk menjalankan tes memori di server Anda dan memberikan server pemeriksaan kesehatan yang baik. Kesalahan ini dapat berupa memori yang buruk atau pencoret memori (proses kernel atau sesuatu yang mengubah memori SQL Server).

Contoh lain:

Galat:824, Tingkat Keparahan:24, Status:2
SQL Server mendeteksi kesalahan I/O berbasis konsistensi logis:pageid salah (diharapkan 1:123; sebenarnya 0-0). Itu terjadi selama pembacaan halaman (1:123) di database ID . Pesan tambahan di log galat SQL Server atau log peristiwa sistem mungkin memberikan detail lebih lanjut.

Kesalahan ini menunjukkan kesalahan konsistensi dalam file data primer database. Anda harus segera menjalankan DBCC CHECKDB untuk menentukan tingkat korupsi dan mengambil tindakan yang tepat untuk memperbaiki atau memulihkan database.

Kesalahan Tingkat Keparahan 25

Kesalahan tingkat keparahan 25 adalah kesalahan sistem yang fatal. Saya telah mendengar bahwa tingkat keparahan 25 kurang lebih merupakan masalah untuk berbagai kesalahan fatal. Saya hanya melihat kesalahan ini ketika terkait dengan pemutakhiran yang gagal:sesuatu mencegah salah satu skrip pemutakhiran berjalan, dan kesalahan 25 tingkat keparahan dilemparkan. Anda akan mendapatkan kesalahan yang mirip dengan:

Pemutakhiran tingkat skrip untuk basis data 'master' gagal karena langkah pemutakhiran 'sqlagent90_sysdbupg.sql' mengalami kesalahan 598, status 1, tingkat keparahan 25. Ini adalah kondisi kesalahan serius yang dapat mengganggu operasi reguler dan basis data akan offline. Jika kesalahan terjadi selama pemutakhiran basis data 'master', itu akan mencegah seluruh contoh SQL Server dimulai. Periksa entri errorlog sebelumnya untuk menemukan kesalahan, ambil tindakan korektif yang sesuai dan mulai ulang database sehingga langkah peningkatan skrip berjalan hingga selesai.

Dalam kasus ini, kesalahan sebelum pesan ini menunjukkan jalur yang salah untuk lokasi data default untuk SQL Server. Setelah itu diperbaiki, pemutakhiran berjalan dengan sukses.

Kesalahan 825

Error 825 sering disebut sebagai peringatan read-retry, namun kondisinya untuk operasi baca dan tulis. Kesalahan ini memberi tahu Anda bahwa percobaan ulang operasi diperlukan dan berapa kali SQL Server harus mencoba lagi sebelum berhasil. SQL Server akan mencoba ulang operasi hingga empat kali, setelah empat kali mencoba lagi akan memunculkan kesalahan 823 atau 824. Pesan kesalahan 825 akan mirip dengan berikut ini:

Pembacaan file 'path to file name\db_name.mdf' pada offset 0x00000002000 berhasil setelah gagal 2 kali dengan error:checksum salah (diharapkan:XYZ; ABC aktual). Pesan tambahan di log galat SQL Server dan log peristiwa sistem dapat memberikan detail lebih lanjut. Kondisi kesalahan ini mengancam integritas database dan harus diperbaiki. Selesaikan pemeriksaan konsistensi basis data lengkap (DBCC CHECKDB). Kesalahan ini dapat disebabkan oleh banyak faktor; untuk informasi selengkapnya, lihat Buku Online SQL Server.

Pesan-pesan ini penting karena menunjukkan bahwa Anda memiliki masalah yang lebih besar dengan subsistem disk Anda. Metode pemecahan masalah adalah dengan menjalankan DBCC CHECKDB untuk memastikan database konsisten, seperti yang direkomendasikan kesalahan, serta meninjau log peristiwa Windows untuk kesalahan dari sistem operasi atau perangkat penyimpanan. Anda juga harus meminta tim dukungan penyimpanan dan perangkat keras untuk meninjau subsistem I/O yang mendasari untuk menemukan kesalahan.

Ringkasan

Mengkonfigurasi lansiran Agen SQL adalah gratis dan mudah. Menjadi proaktif dan responsif terhadap peringatan ini penting untuk membantu meminimalkan waktu henti bagi Anda dan pelanggan Anda. Seperti yang telah Anda pelajari sekarang, banyak hal yang dapat memengaruhi SQL Server dan konsistensi database Anda, dan pertahanan terbaik untuk dapat memulihkan dari kesalahan ini adalah memiliki cadangan yang baik dan mengetahui berbagai opsi perbaikan untuk DBCC CHECKDB . Selalu disarankan untuk menjalankan DBCC CHECKDB secara teratur terhadap database Anda untuk mendeteksi kerusakan sedini mungkin, karena semakin cepat Anda menemukan kerusakan, semakin besar kemungkinan Anda memiliki cadangan data sehingga Anda dapat memulihkan tanpa kehilangan data.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menjalankan SQL Server 2014 di Mesin Virtual Azure

  2. Bagaimana cara menghapus tag HTML dari string di SQL Server?

  3. Perbaiki "nama profil tidak valid" Saat Mengirim Email dari SQL Server

  4. Permintaan PIVOT dinamis SQL Server?

  5. Kembalikan Baris yang Mengandung Karakter Non-Alfanumerik di SQL Server