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:29Klien 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 1Berusaha 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:
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:6Terjadi 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:1Halaman yang seharusnya konstan telah berubah (checksum yang diharapkan:
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:2SQL 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
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.