Bagikan melalui


Membuat Aplikasi Driver - Mode Asinkron dan SQLCancel

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Penting

SQL Server Native Client (sering disingkat SNAC) telah dihapus dari SQL Server 2022 (16.x) dan SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan aplikasi baru. Beralih ke Microsoft OLE DB Driver (MSOLEDBSQL) baru untuk SQL Server atau Microsoft ODBC Driver terbaru untuk SQL Server ke depannya. Untuk SQLNCLI yang dikirim sebagai komponen SQL Server Database Engine (versi 2012 hingga 2019), lihat pengecualian Siklus Hidup Dukungan ini.

Beberapa fungsi ODBC dapat beroperasi baik secara sinkron atau asinkron. Aplikasi dapat mengaktifkan operasi asinkron untuk handel pernyataan atau handel koneksi. Jika opsi diatur untuk handel koneksi, opsi tersebut memengaruhi semua handel pernyataan pada handel koneksi. Aplikasi ini menggunakan pernyataan berikut untuk mengaktifkan atau menonaktifkan operasi asinkron:

SQLSetConnectAttr(hdbc, SQL_ATTR_ASYNC_ENABLE,  
                        SQL_ASYNC_ENABLE_ON, SQL_IS_INTEGER);  
SQLSetConnectAttr(hdbc, SQL_ATTR_ASYNC_ENABLE,  
                        SQL_ASYNC_ENABLE_OFF, SQL_IS_INTEGER);  
SQLSetStmtAttr(hstmt, SQL_ATTR_ASYNC_ENABLE,  
                        SQL_ASYNC_ENABLE_ON, SQL_IS_INTEGER);  
SQLSetStmtAttr(hstmt, SQL_ATTR_ASYNC_ENABLE,  
                        SQL_ASYNC_ENABLE_OFF, SQL_IS_INTEGER);  

Ketika aplikasi memanggil fungsi ODBC dalam mode sinkron, driver tidak mengembalikan kontrol ke aplikasi sampai diberi tahu bahwa server telah menyelesaikan perintah.

Saat beroperasi secara asinkron, driver segera mengembalikan kontrol ke aplikasi, bahkan sebelum mengirim perintah ke server. Driver mengatur kode pengembalian ke SQL_STILL_EXECUTING. Aplikasi kemudian dapat melakukan pekerjaan lain.

Ketika aplikasi menguji penyelesaian perintah, aplikasi melakukan panggilan fungsi yang sama dengan parameter yang sama ke driver. Jika driver belum menerima jawaban dari server, driver akan kembali SQL_STILL_EXECUTING. Aplikasi harus menguji perintah secara berkala sampai kode pengembalian adalah sesuatu selain SQL_STILL_EXECUTING. Ketika aplikasi mendapatkan beberapa kode pengembalian lainnya, bahkan SQL_ERROR, aplikasi dapat menentukan bahwa perintah telah selesai.

Terkadang perintah luar biasa untuk waktu yang lama. Jika aplikasi perlu membatalkan perintah tanpa menunggu balasan, aplikasi dapat melakukannya dengan memanggil SQLCancel dengan handel pernyataan yang sama dengan perintah yang luar biasa. Ini adalah satu-satunya waktu SQLCancel harus digunakan. Beberapa programmer menggunakan SQLCancel ketika mereka telah memproses sebagian melalui tataan hasil dan ingin membatalkan sisa kumpulan hasil. SQLMoreResults atau SQLCloseCursor harus digunakan untuk membatalkan sisa kumpulan hasil yang luar biasa, bukan SQLCancel.

Lihat Juga

Membuat Aplikasi Driver ODBC Klien Asli SQL Server