Tingkat keparahan kesalahan Mesin Database

Berlaku untuk:SQL Server

Ketika kesalahan dimunculkan oleh Mesin Database SQL Server, tingkat keparahan kesalahan menunjukkan jenis masalah yang dihadapi oleh SQL Server.

Tingkat keparahan

Tabel berikut ini mencantumkan dan menjelaskan tingkat keparahan kesalahan yang dimunculkan oleh Mesin Database SQL Server.

Tingkat keparahan Deskripsi
0-9 Pesan informasi yang mengembalikan informasi status atau melaporkan kesalahan yang tidak parah. Mesin Database tidak memunculkan kesalahan sistem dengan tingkat keparahan 0 hingga 9.
10 Pesan informasi yang mengembalikan informasi status atau melaporkan kesalahan yang tidak parah. Untuk alasan kompatibilitas, Mesin Database mengonversi tingkat keparahan 10 menjadi tingkat keparahan 0 sebelum mengembalikan informasi kesalahan ke aplikasi panggilan.
11-16 Menunjukkan kesalahan yang dapat dikoreksi oleh pengguna.
11 Menunjukkan bahwa objek atau entitas yang diberikan tidak ada.
12 Tingkat keparahan khusus untuk kueri yang tidak menggunakan penguncian karena petunjuk kueri khusus. Dalam beberapa kasus, operasi baca yang dilakukan oleh pernyataan ini dapat mengakibatkan data yang tidak konsisten, karena kunci tidak diambil untuk menjamin konsistensi.
13 Menunjukkan kesalahan kebuntuan transaksi.
14 Menunjukkan kesalahan terkait keamanan, seperti izin ditolak.
15 Menunjukkan kesalahan sintaks dalam perintah Transact-SQL.
16 Menunjukkan kesalahan umum yang dapat dikoreksi oleh pengguna.
17-19 Menunjukkan kesalahan perangkat lunak yang tidak dapat dikoreksi oleh pengguna. Beri tahu administrator sistem Anda tentang masalah tersebut.
17 Menunjukkan bahwa pernyataan menyebabkan SQL Server kehabisan sumber daya (seperti memori, kunci, atau ruang disk untuk database) atau melebihi beberapa batas yang ditetapkan oleh administrator sistem.
18 Menunjukkan masalah dalam perangkat lunak Mesin Database, tetapi pernyataan menyelesaikan eksekusi, dan koneksi ke instans Mesin Database dipertahankan. Administrator sistem harus diberi tahu setiap kali pesan dengan tingkat keparahan 18 terjadi.
19 Menunjukkan bahwa batas Mesin Database yang tidak dapat dikonfigurasi telah terlampaui dan proses batch saat ini telah dihentikan. Pesan kesalahan dengan tingkat keparahan 19 atau lebih tinggi menghentikan eksekusi batch saat ini. Kesalahan tingkat keparahan 19 jarang terjadi dan harus dikoreksi oleh administrator sistem atau penyedia dukungan utama Anda. Hubungi administrator sistem Anda ketika pesan dengan tingkat keparahan 19 dinaikkan. Pesan kesalahan dengan tingkat keparahan dari 19 hingga 25 ditulis ke log kesalahan.
20-24 Menunjukkan masalah sistem dan merupakan kesalahan fatal, yang berarti bahwa tugas Mesin Database yang menjalankan pernyataan atau batch tidak lagi berjalan. Tugas merekam informasi tentang apa yang terjadi lalu dihentikan. Dalam kebanyakan kasus, koneksi aplikasi ke instans Mesin Database juga dapat dihentikan. Jika ini terjadi, tergantung pada masalahnya, aplikasi mungkin tidak dapat terhubung kembali.

Pesan kesalahan dalam rentang ini dapat memengaruhi semua proses yang mengakses data dalam database yang sama dan mungkin menunjukkan bahwa database atau objek rusak. Pesan kesalahan dengan tingkat keparahan dari 19 hingga 24 ditulis ke log kesalahan.
20 Menunjukkan bahwa pernyataan mengalami masalah. Karena masalah hanya memengaruhi tugas saat ini, tidak mungkin database itu sendiri telah rusak.
21 Menunjukkan bahwa masalah telah ditemui yang memengaruhi semua tugas dalam database saat ini, tetapi tidak mungkin database itu sendiri telah rusak.
22 Menunjukkan bahwa tabel atau indeks yang ditentukan dalam pesan telah rusak oleh masalah perangkat lunak atau perangkat keras.

Kesalahan tingkat keparahan 22 jarang terjadi. Jika terjadi, jalankan DBCC CHECKDB untuk menentukan apakah objek lain dalam database juga rusak. Masalahnya mungkin hanya ada di cache buffer dan bukan pada disk itu sendiri. Jika demikian, memulai ulang instans Mesin Database akan memperbaiki masalah. Untuk terus bekerja, Anda harus terhubung kembali ke instans Mesin Database; jika tidak, gunakan DBCC untuk memperbaiki masalah. Dalam beberapa kasus, Anda mungkin harus memulihkan database.

Jika memulai ulang instans Mesin Database tidak memperbaiki masalah, maka masalahnya ada pada disk. Terkadang menghancurkan objek yang ditentukan dalam pesan kesalahan dapat menyelesaikan masalah. Misalnya, jika pesan melaporkan bahwa instans Mesin Database telah menemukan baris dengan panjang 0 dalam indeks nonclustered, hapus indeks dan bangun ulang.
23 Menunjukkan bahwa integritas seluruh database dipermasalahkan karena masalah perangkat keras atau perangkat lunak.

Kesalahan tingkat keparahan 23 jarang terjadi. Jika terjadi, jalankan DBCC CHECKDB untuk menentukan tingkat kerusakan. Masalahnya mungkin hanya ada di cache dan bukan pada disk itu sendiri. Jika demikian, memulai ulang instans Mesin Database akan memperbaiki masalah. Untuk terus bekerja, Anda harus terhubung kembali ke instans Mesin Database; jika tidak, gunakan DBCC untuk memperbaiki masalah. Dalam beberapa kasus, Anda mungkin harus memulihkan database.
24 Menunjukkan kegagalan media. Administrator sistem mungkin harus memulihkan database. Anda mungkin juga harus memanggil vendor perangkat keras Anda.

Tingkat keparahan pesan kesalahan yang ditentukan pengguna

Anda dapat menggunakan sp_addmessage untuk menambahkan pesan kesalahan yang ditentukan pengguna dengan tingkat keparahan dari 1 hingga 25 ke sys.messages tampilan katalog. Pesan kesalahan yang ditentukan pengguna ini dapat digunakan oleh RAISERROR. Untuk informasi selengkapnya, lihat sp_addmessage (Transact-SQL).

RAISERROR dapat digunakan untuk menghasilkan pesan kesalahan yang ditentukan pengguna dengan tingkat keparahan dari 1 hingga 25. RAISERROR dapat mereferensikan pesan kesalahan yang ditentukan pengguna yang disimpan dalam sys.messages tampilan katalog atau membangun pesan secara dinamis. Saat menggunakan pesan kesalahan yang ditentukan pengguna saat sys.messages menghasilkan kesalahan, tingkat keparahan yang ditentukan dengan RAISERROR mengambil alih tingkat keparahan yang ditentukan dalam sys.messages. Untuk informasi selengkapnya, lihat RAISERROR (Transact-SQL).

Tingkat keparahan kesalahan dan TRY... MENANGKAP

COBA... Konstruksi CATCH menangkap semua kesalahan eksekusi dengan tingkat keparahan lebih besar dari 10 yang tidak mengakhiri koneksi database.

Kesalahan dengan tingkat keparahan dari 0 hingga 10 adalah pesan informasi dan tidak menyebabkan eksekusi melompat dari blok CATCH dari TRY... KONSTRUKSI CATCH.

Kesalahan yang mengakhiri koneksi database, biasanya dengan tingkat keparahan dari 20 hingga 25, tidak ditangani oleh blok CATCH karena eksekusi dibatalkan ketika koneksi berakhir.

Untuk informasi selengkapnya, lihat TRY... CATCH (Transact-SQL).

Mengambil tingkat keparahan kesalahan

Fungsi sistem ERROR_SEVERITY dapat digunakan untuk mengambil tingkat keparahan kesalahan yang menyebabkan blok CATCH try... KONSTRUKSI CATCH yang akan dijalankan. ERROR_SEVERITY mengembalikan NULL jika dipanggil di luar cakupan blok CATCH. Untuk informasi selengkapnya, lihat ERROR_SEVERITY (Transact-SQL).

Baca juga