Menangani Kesalahan dan Pesan
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Ketika aplikasi memanggil fungsi ODBC, driver menjalankan fungsi dan mengembalikan informasi diagnostik dengan dua cara: Kode pengembalian menunjukkan keberhasilan atau kegagalan keseluruhan fungsi ODBC, dan catatan diagnostik memberikan informasi terperinci tentang fungsi tersebut. Rekaman diagnostik menyertakan rekaman header dan rekaman status. Setidaknya satu rekaman diagnostik, rekaman header, dikembalikan meskipun fungsi berhasil.
Informasi diagnostik digunakan pada waktu pengembangan untuk menangkap kesalahan pemrograman, seperti handel yang tidak valid dan kesalahan sintaks dalam pernyataan SQL yang dikodekan secara permanen. Ini juga digunakan pada waktu proses untuk menangkap kesalahan run-time dan peringatan, seperti pemotongan data, pelanggaran aturan, dan kesalahan sintaks dalam pernyataan SQL yang dimasukkan oleh pengguna. Logika program umumnya didasarkan pada kode pengembalian.
Misalnya, setelah aplikasi memanggil SQLFetch untuk mengambil baris dalam kumpulan hasil, kode pengembalian menunjukkan apakah akhir kumpulan hasil tercapai (SQL_NO_DATA), jika ada pesan informasi yang dikembalikan (SQL_SUCCESS_WITH_INFO), atau jika terjadi kesalahan (SQL_ERROR).
Jika driver ODBC SQL Server Native Client mengembalikan apa pun selain SQL_SUCCESS, aplikasi dapat memanggil SQLGetDiagRec untuk mengambil pesan informasi atau kesalahan apa pun. Gunakan SQLGetDiagRec untuk menggulir ke atas dan ke bawah kumpulan pesan jika ada lebih dari satu pesan.
Kode pengembalian SQL_INVALID_HANDLE selalu menunjukkan kesalahan pemrograman dan tidak boleh ditemui pada waktu proses. Semua kode pengembalian lainnya memberikan informasi run-time, meskipun SQL_ERROR mungkin menunjukkan kesalahan pemrograman.
API asli Microsoft SQL Server asli, DB-Library untuk C, memungkinkan aplikasi menginstal fungsi penanganan kesalahan dan penanganan pesan panggilan balik yang mengembalikan kesalahan atau pesan. Beberapa pernyataan Transact-SQL, seperti PRINT, RAISERROR, DBCC, dan SET, mengembalikan hasilnya ke fungsi handler pesan DB-Library alih-alih ke kumpulan hasil. Namun, ODBC API tidak memiliki kemampuan panggilan balik seperti itu. Ketika driver ODBC Klien Asli SQL Server mendeteksi pesan yang kembali dari SQL Server, ia mengatur kode pengembalian ODBC ke SQL_SUCCESS_WITH_INFO atau SQL_ERROR dan mengembalikan pesan sebagai satu atau beberapa rekaman diagnostik. Oleh karena itu, aplikasi ODBC harus menguji kode pengembalian ini dengan hati-hati dan memanggil SQLGetDiagRec untuk mengambil data pesan.
Untuk informasi tentang kesalahan pelacakan, lihat Pelacakan Akses Data. Untuk informasi tentang peningkatan pelacakan kesalahan yang ditambahkan di SQL Server 2012 (11.x), lihat Mengakses Informasi Diagnostik di Log Peristiwa yang Diperluas.