Bagikan melalui


Fungsi SQLSetConnectAttr

Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 3.0: ISO 92

Ringkasan
SQLSetConnectAttr menetapkan atribut yang mengatur aspek koneksi.

Catatan

Untuk informasi selengkapnya tentang apa manajer driver memetakan fungsi ini ketika aplikasi ODBC 3*.x* bekerja dengan driver ODBC 2*.x*, lihat Memetakan Fungsi Penggantian untuk Kompatibilitas Mundur Aplikasi.

Sintaks

  
SQLRETURN SQLSetConnectAttr(  
     SQLHDBC       ConnectionHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

Argumen

ConnectionHandle
[Input] Handel koneksi.

Atribut
[Input] Atribut yang akan diatur, tercantum dalam "Komentar."

ValuePtr
[Input] Penunjuk ke nilai yang akan dikaitkan dengan Atribut. Bergantung pada nilai Atribut, ValuePtr akan menjadi nilai bilangan bulat yang tidak ditandatangani atau akan menunjuk ke string karakter yang dihentikan null. Perhatikan bahwa jenis integral argumen Atribut mungkin tidak panjangnya tetap, lihat bagian Komentar untuk detailnya.

StringLength
[Input] Jika Atribut adalah atribut yang ditentukan ODBC dan ValuePtr menunjuk ke string karakter atau buffer biner, argumen ini harus panjangnya *ValuePtr. Untuk data string karakter, argumen ini harus berisi jumlah byte dalam string.

Jika Atribut adalah atribut yang ditentukan ODBC dan ValuePtr adalah bilangan bulat, StringLength diabaikan.

Jika Atribut adalah atribut yang ditentukan driver, aplikasi menunjukkan sifat atribut ke Driver Manager dengan mengatur argumen StringLength . StringLength dapat memiliki nilai berikut:

  • Jika ValuePtr adalah penunjuk ke string karakter, maka StringLength adalah panjang string atau SQL_NTS.

  • Jika ValuePtr adalah penunjuk ke buffer biner, maka aplikasi menempatkan hasil makro SQL_LEN_BINARY_ATTR(length) di StringLength. Ini menempatkan nilai negatif dalam StringLength.

  • Jika ValuePtr adalah penunjuk ke nilai selain string karakter atau string biner, string StringLength harus memiliki nilai SQL_IS_POINTER.

  • Jika ValuePtr berisi nilai panjang tetap, maka StringLength adalah SQL_IS_INTEGER atau SQL_IS_UINTEGER, yang sesuai.

Mengembalikan

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE, atau SQL_STILL_EXECUTING.

Diagnostik

Saat SQLSetConnectAttr mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO, nilai SQLSTATE terkait dapat diperoleh dengan memanggil SQLGetDiagRec dengan HandleType SQL_HANDLE_DBC dan Handle of ConnectionHandle. Tabel berikut mencantumkan nilai SQLSTATE yang umumnya dikembalikan oleh SQLSetConnectAttr dan menjelaskan masing-masing dalam konteks fungsi ini; notasi "(DM)" mendahului deskripsi SQLSTATEs yang dikembalikan oleh Driver Manager. Kode pengembalian yang terkait dengan setiap nilai SQLSTATE SQL_ERROR, kecuali disebutkan sebaliknya.

Driver dapat mengembalikan SQL_SUCCESS_WITH_INFO untuk memberikan informasi tentang hasil pengaturan opsi.

SQLSTATE Kesalahan Deskripsi
01000 Peringatan umum Pesan informasi khusus driver. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.)
01S02 Nilai opsi berubah Driver tidak mendukung nilai yang ditentukan dalam ValuePtr dan menggantikan nilai serupa. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.)
08002 Nama koneksi yang digunakan Argumen Atribut SQL_ATTR_ODBC_CURSORS, dan driver sudah tersambung ke sumber data.
08003 Koneksi tidak terbuka (DM) Nilai Atribut ditentukan yang memerlukan koneksi terbuka, tetapi ConnectionHandle tidak dalam status tersambung.
08S01 Kegagalan tautan komunikasi Tautan komunikasi antara driver dan sumber data tempat driver tersambung gagal sebelum fungsi selesai diproses.
24000 Status kursor tidak valid Argumen Atribut SQL_ATTR_CURRENT_CATALOG, dan kumpulan hasil tertunda.
25000 Operasi ilegal saat dalam transaksi lokal Koneksi berada dalam transaksi lokal saat mencoba mendaftarkan koneksi transaksi terdistribusi (DTC) dengan mengatur atribut koneksi SQL_ATTR_ENLIST_IN_DTC.

Koneksi sudah terdaftar dalam DTC.

Koneksi telah terdaftar dalam koneksi transaksi terdistribusi dan transaksi lokal dimulai dengan mengatur SQL_ATTR_AUTOCOMMIT ke SQL_AUTOCOMMIT_OFF.
3D000 Nama katalog tidak valid Argumen Atribut SQL_CURRENT_CATALOG, dan nama katalog yang ditentukan tidak valid.
HY000 Kesalahan umum Terjadi kesalahan yang tidak ada SQLSTATE tertentu dan tidak ada SQLSTATE khusus implementasi yang ditentukan. Pesan kesalahan yang dikembalikan oleh SQLGetDiagRec di buffer *MessageText menjelaskan kesalahan dan penyebabnya.
HY001 Kesalahan alokasi memori Driver tidak dapat mengalokasikan memori yang diperlukan untuk mendukung eksekusi atau penyelesaian fungsi.
HY008 Operasi dibatalkan Pemrosesan asinkron diaktifkan untuk ConnectionHandle. Fungsi SQLSetConnectAttr dipanggil, dan sebelum selesai dieksekusi, fungsi SQLCancelHandle dipanggil pada ConnectionHandle, dan kemudian fungsi SQLSetConnectAttr dipanggil lagi pada ConnectionHandle.

Atau, fungsi SQLSetConnectAttr dipanggil, dan sebelum selesai dieksekusi, SQLCancelHandle dipanggil pada ConnectionHandle dari utas yang berbeda dalam aplikasi multithread.
HY009 Penggunaan pointer null tidak valid Argumen Atribut mengidentifikasi atribut koneksi yang memerlukan nilai string, dan argumen ValuePtr adalah pointer null.
HY010 Kesalahan urutan fungsi (DM) Fungsi eksekusi asinkron dipanggil untuk StatementHandle yang terkait dengan ConnectionHandle dan masih dijalankan ketika SQLSetConnectAttr dipanggil.

(DM) Fungsi eksekusi asinkron (bukan yang ini) dipanggil untuk ConnectionHandle dan masih dijalankan ketika fungsi ini dipanggil.

(DM) SQLExecute, SQLExecDirect, atau SQLMoreResults dipanggil untuk salah satu handel pernyataan yang terkait dengan ConnectionHandle dan dikembalikan SQL_PARAM_DATA_AVAILABLE. Fungsi ini dipanggil sebelum data diambil untuk semua parameter yang dialirkan.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos dipanggil untuk StatementHandle yang terkait dengan ConnectionHandle dan SQL_NEED_DATA yang dikembalikan. Fungsi ini dipanggil sebelum data dikirim untuk semua parameter atau kolom data-at-execution.

(DM) SQLBrowseConnect dipanggil untuk ConnectionHandle dan dikembalikan SQL_NEED_DATA. Fungsi ini dipanggil sebelum SQLBrowseConnect mengembalikan SQL_SUCCESS_WITH_INFO atau SQL_SUCCESS.
HY011 Atribut tidak dapat diatur sekarang Argumen Atribut SQL_ATTR_TXN_ISOLATION, dan transaksi terbuka.
HY013 Kesalahan manajemen memori Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah.
HY024 Nilai atribut tidak valid Mengingat nilai Atribut yang ditentukan, nilai yang tidak valid ditentukan dalam ValuePtr. (Manajer Driver mengembalikan SQLSTATE ini hanya untuk atribut koneksi dan pernyataan yang menerima serangkaian nilai diskrit, seperti SQL_ATTR_ACCESS_MODE atau SQL_ATTR_ASYNC_ENABLE. Untuk semua atribut koneksi dan pernyataan lainnya, driver harus memverifikasi nilai yang ditentukan dalam ValuePtr.)

Argumen Atribut SQL_ATTR_TRACEFILE atau SQL_ATTR_TRANSLATE_LIB, dan ValuePtr adalah string kosong.
HY090 String atau panjang buffer tidak valid (DM) *ValuePtr adalah string karakter, dan argumen StringLength kurang dari 0 tetapi tidak SQL_NTS.
HY092 Pengidentifikasi atribut/opsi tidak valid (DM) Nilai yang ditentukan untuk atribut argumen tidak valid untuk versi ODBC yang didukung oleh driver.

(DM) Nilai yang ditentukan untuk atribut argumen adalah atribut baca-saja.
HY114 Driver tidak mendukung eksekusi fungsi asinkron tingkat koneksi (DM) Aplikasi mencoba mengaktifkan eksekusi fungsi asinkron dengan SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE untuk driver yang tidak mendukung operasi koneksi asinkron.
HY117 Koneksi ditangguhkan karena status transaksi yang tidak diketahui. Hanya fungsi putuskan sambungan dan baca-saja yang diizinkan. (DM) Untuk informasi selengkapnya tentang status ditangguhkan, lihat Fungsi SQLEndTran.
HY121 Pustaka Kursor dan Kumpulan Sadar Driver tidak dapat diaktifkan secara bersamaan Untuk informasi selengkapnya, lihat Pengumpulan Koneksi Sadar Driver.
HYC00 Fitur opsional tidak diimplementasikan Nilai yang ditentukan untuk atribut argumen adalah atribut koneksi atau pernyataan ODBC yang valid untuk versi ODBC yang didukung oleh driver tetapi tidak didukung oleh driver.
HYT01 Kesalahan waktu habis koneksi kedaluwarsa Periode batas waktu koneksi kedaluwarsa sebelum sumber data merespons permintaan. Periode batas waktu koneksi diatur melalui SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Driver tidak mendukung fungsi ini (DM) Driver yang terkait dengan ConnectionHandle tidak mendukung fungsi.
IM009 Tidak dapat memuat DLL terjemahan Pengandar tidak dapat memuat DLL terjemahan yang ditentukan untuk koneksi. Kesalahan ini hanya dapat dikembalikan saat Atribut SQL_ATTR_TRANSLATE_LIB.
IM017 Polling dinonaktifkan dalam mode pemberitahuan asinkron Setiap kali model pemberitahuan digunakan, polling dinonaktifkan.
IM018 SQLCompleteAsync belum dipanggil untuk menyelesaikan operasi asinkron sebelumnya pada handel ini. Jika panggilan fungsi sebelumnya pada handel mengembalikan SQL_STILL_EXECUTING dan jika mode pemberitahuan diaktifkan, SQLCompleteAsync harus dipanggil pada handel untuk melakukan pasca-pemrosesan dan menyelesaikan operasi.
S1118 Driver tidak mendukung pemberitahuan asinkron SQL_ATTR_ASYNC_DBC_EVENT diatur (setelah koneksi dibuat) tetapi pemberitahuan asinkron tidak didukung oleh driver.

Saat Atribut adalah atribut pernyataan, SQLSetConnectAttr dapat mengembalikan SQLSTATES apa pun yang dikembalikan oleh SQLSetStmtAttr.

Komentar

Untuk informasi umum tentang atribut koneksi, lihat Atribut Koneksi.

Atribut yang saat ini ditentukan dan versi ODBC tempat mereka diperkenalkan ditampilkan dalam tabel nanti di bagian ini; diharapkan lebih banyak atribut akan didefinisikan untuk memanfaatkan sumber data yang berbeda. Berbagai atribut dicadangkan oleh ODBC; pengembang driver harus memesan nilai untuk penggunaan khusus driver mereka sendiri dari Grup Terbuka.

Catatan

Kemampuan untuk mengatur atribut pernyataan di tingkat koneksi dengan memanggil SQLSetConnectAttr telah tidak digunakan lagi di ODBC 3*.x*. Aplikasi ODBC 3*.x* tidak boleh mengatur atribut pernyataan di tingkat koneksi. Atribut pernyataan ODBC 3*.x* tidak dapat diatur pada tingkat koneksi, dengan pengecualian atribut SQL_ATTR_METADATA_ID dan SQL_ATTR_ASYNC_ENABLE, yang merupakan atribut koneksi dan atribut pernyataan dan dapat diatur pada tingkat koneksi atau tingkat pernyataan.

Driver ODBC 3*.x* hanya perlu mendukung fungsionalitas ini jika mereka harus bekerja dengan aplikasi ODBC 2*.x* yang mengatur opsi pernyataan ODBC 2*.x* di tingkat koneksi. Untuk informasi selengkapnya, lihat Pemetaan SQLSetConnectOption di Lampiran G: Panduan Driver untuk Kompatibilitas Mundur.

Aplikasi dapat memanggil SQLSetConnectAttr kapan saja antara waktu koneksi dialokasikan dan dibeberkan. Semua atribut koneksi dan pernyataan berhasil diatur oleh aplikasi untuk koneksi tetap ada sampai SQLFreeHandle dipanggil pada koneksi. Misalnya, jika aplikasi memanggil SQLSetConnectAttr sebelum menyambungkan ke sumber data, atribut tetap ada bahkan jika SQLSetConnectAttr gagal di driver saat aplikasi terhubung ke sumber data; jika aplikasi mengatur atribut khusus driver, atribut tetap ada bahkan jika aplikasi terhubung ke driver yang berbeda pada koneksi.

Beberapa atribut koneksi hanya dapat diatur sebelum koneksi dibuat; yang lain hanya dapat diatur setelah koneksi dibuat. Tabel berikut menunjukkan atribut koneksi yang harus diatur baik sebelum atau sesudah koneksi dibuat. Menunjukkan bahwa atribut dapat diatur baik sebelum atau sesudah koneksi.

Atribut Atur sebelum atau sesudah koneksi?
SQL_ATTR_ACCESS_MODE Salah satu[1]
SQL_ATTR_ASYNC_DBC_EVENT Baik
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE Salah satu[4]
SQL_ATTR_ASYNC_DBC_PCALLBACK Baik
SQL_ATTR_ASYNC_DBC_PCONTEXT Baik
SQL_ATTR_ASYNC_ENABLE Salah satu[2]
SQL_ATTR_AUTO_IPD Baik
SQL_ATTR_AUTOCOMMIT Salah satu[5]
SQL_ATTR_CONNECTION_DEAD Sesudahnya
SQL_ATTR_CONNECTION_TIMEOUT Baik
SQL_ATTR_CURRENT_CATALOG Salah satu[1]
SQL_ATTR_DBC_INFO_TOKEN Sesudahnya
SQL_ATTR_ENLIST_IN_DTC Sesudahnya
SQL_ATTR_LOGIN_TIMEOUT Sebelumnya
SQL_ATTR_METADATA_ID Baik
SQL_ATTR_ODBC_CURSORS Sebelumnya
SQL_ATTR_PACKET_SIZE Sebelumnya
SQL_ATTR_QUIET_MODE Baik
SQL_ATTR_TRACE Baik
SQL_ATTR_TRACEFILE Baik
SQL_ATTR_TRANSLATE_LIB Sesudahnya
SQL_ATTR_TRANSLATE_OPTION Sesudahnya
SQL_ATTR_TXN_ISOLATION Salah satu[3]

[1] SQL_ATTR_ACCESS_MODE dan SQL_ATTR_CURRENT_CATALOG dapat diatur sebelum atau sesudah terhubung, tergantung pada driver. Namun, aplikasi yang dapat dioperasikan mengaturnya sebelum menyambungkannya karena beberapa driver tidak mendukung perubahan ini setelah menyambungkan.

[2] SQL_ATTR_ASYNC_ENABLE harus ditetapkan sebelum ada pernyataan aktif.

[3] SQL_ATTR_TXN_ISOLATION hanya dapat diatur jika tidak ada transaksi terbuka pada koneksi. Beberapa atribut koneksi mendukung penggantian nilai serupa jika sumber data tidak mendukung nilai yang ditentukan dalam *ValuePtr. Dalam kasus seperti itu, driver mengembalikan SQL_SUCCESS_WITH_INFO dan SQLSTATE 01S02 (Nilai opsi berubah). Misalnya, jika Atribut SQL_ATTR_PACKET_SIZE dan *ValuePtr melebihi ukuran paket maksimum, driver menggantikan ukuran maksimum. Untuk menentukan nilai yang diganti, aplikasi memanggil SQLGetConnectAttr.

[4] Jika SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE diatur sebelum koneksi terbuka, Manajer Driver akan mengatur atribut driver saat driver dimuat selama panggilan ke SQLBrowseConnect, SQLConnect, atau SQLDriverConnect. Sebelum panggilan ke SQLBrowseConnect, SQLConnect, atau SQLDriverConnect, Manajer Driver tidak tahu driver mana yang akan disambungkan dan tidak tahu apakah driver mendukung operasi koneksi asinkron. Oleh karena itu, Driver Manager selalu mengembalikan SQL_SUCCESS. Tetapi, jika driver tidak mendukung operasi koneksi asinkron, panggilan ke SQLBrowseConnect, SQLConnect, atau SQLDriverConnect akan gagal.

[5] Ketika SQL_ATTR_AUTOCOMMIT diatur ke FALSE, aplikasi harus memanggil SQLEndTran(SQL_ROLLBACK) jika ada API yang mengembalikan SQL_ERROR untuk memastikan konsistensi transaksi.

Format informasi yang diatur dalam buffer *ValuePtr tergantung pada Atribut yang ditentukan. SQLSetConnectAttr akan menerima informasi atribut dalam salah satu dari dua format berbeda: string karakter yang dihentikan null atau nilai bilangan bulat. Format masing-masing dicatat dalam deskripsi atribut. String karakter yang diacu oleh argumen ValuePtr dari SQLSetConnectAttr memiliki panjang byte StringLength .

Argumen StringLength diabaikan jika panjangnya ditentukan oleh atribut, seperti halnya untuk semua atribut yang diperkenalkan dalam ODBC 2*.x* atau yang lebih lama.

Atribut Konten ValuePtr
SQL_ATTR_ACCESS_MODE (ODBC 1.0) Nilai SQLUINTEGER. SQL_MODE_READ_ONLY digunakan oleh driver atau sumber data sebagai indikator bahwa koneksi tidak diperlukan untuk mendukung pernyataan SQL yang menyebabkan pembaruan terjadi. Mode ini dapat digunakan untuk mengoptimalkan strategi penguncian, manajemen transaksi, atau area lain yang sesuai dengan driver atau sumber data. Driver tidak diperlukan untuk mencegah pernyataan tersebut dikirimkan ke sumber data. Perilaku driver dan sumber data ketika diminta untuk memproses pernyataan SQL yang tidak baca-saja selama koneksi baca-saja ditentukan implementasi. SQL_MODE_READ_WRITE adalah default.
SQL_ATTR_ASYNC_DBC_EVENT (ODBC 3.8) Nilai SQLPOINTER yang merupakan handel peristiwa.

Pemberitahuan penyelesaian fungsi asinkron diaktifkan dengan memanggil SQLSetConnectAttr dengan atribut SQL_ATTR_ASYNC_STMT_EVENT dan menentukan handel peristiwa. Catatan: Metode pemberitahuan tidak didukung dengan pustaka kursor. Aplikasi akan menerima pesan kesalahan jika mencoba mengaktifkan pustaka kursor melalui SQLSetConnectAttr, saat metode pemberitahuan diaktifkan.
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE (ODBC 3.8) Nilai SQLUINTEGER yang memungkinkan atau menonaktifkan eksekusi asinkron fungsi yang dipilih pada handel koneksi. Untuk informasi selengkapnya, lihat Eksekusi Asinkron (Metode Polling).

SQL_ASYNC_DBC_ENABLE_ON = Aktifkan operasi asinkron untuk fungsi terkait koneksi tertentu.

SQL_ASYNC_DBC_ENABLE_OFF = (Default) Nonaktifkan operasi asinkron untuk fungsi terkait koneksi tertentu.

Pengaturan SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE selalu sinkron (artinya, tidak akan pernah mengembalikan SQL_STILL_EXECUTING).

Eksekusi asinkron operasi pernyataan diaktifkan dengan SQL_ATTR_ASYNC_ENABLE.
SQL_ATTR_ASYNC_DBC_PCALLBACK (ODBC 3.8) Nilai SQLPOINTER yang menunjuk ke struktur konteks.

Hanya Driver Manager yang dapat memanggil fungsi SQLSetStmtAttr driver dengan atribut ini.
SQL_ATTR_ASYNC_DBC_PCONTEXT (ODBC 3.8) Nilai SQLPOINTER yang menunjuk ke struktur konteks.

Hanya Driver Manager yang dapat memanggil fungsi SQLSetStmtAttr driver dengan atribut ini.
SQL_ATTR_ASYNC_ENABLE (ODBC 3.0) Nilai SQLULEN yang menentukan apakah fungsi yang disebut dengan pernyataan pada koneksi yang ditentukan dijalankan secara asinkron:

SQL_ASYNC_ENABLE_OFF = Nonaktifkan dukungan eksekusi asinkron tingkat koneksi untuk operasi pernyataan (default).

SQL_ASYNC_ENABLE_ON = Aktifkan dukungan eksekusi asinkron tingkat koneksi untuk operasi pernyataan.

Atribut ini dapat diatur apakah SQLGetInfo dengan jenis informasi SQL_ASYNC_MODE mengembalikan SQL_AM_CONNECTION atau SQL_AM_STATEMENT.
SQL_ATTR_AUTO_IPD (ODBC 3.0) Nilai SQLUINTEGER baca-saja yang menentukan apakah populasi otomatis IPD setelah panggilan ke SQLPrepare didukung:

SQL_TRUE = Populasi otomatis IPD setelah panggilan ke SQLPrepare didukung oleh driver.

SQL_FALSE = Populasi otomatis IPD setelah panggilan ke SQLPrepare tidak didukung oleh driver. Server yang tidak mendukung pernyataan yang disiapkan tidak akan dapat mengisi IPD secara otomatis.

Jika SQL_TRUE dikembalikan untuk atribut koneksi SQL_ATTR_AUTO_IPD, atribut pernyataan SQL_ATTR_ENABLE_AUTO_IPD dapat diatur untuk mengaktifkan atau menonaktifkan populasi otomatis IPD. Jika SQL_ATTR_AUTO_IPD SQL_FALSE, SQL_ATTR_ENABLE_AUTO_IPD tidak dapat diatur ke SQL_TRUE. Nilai default SQL_ATTR_ENABLE_AUTO_IPD sama dengan nilai SQL_ATTR_AUTO_IPD.

Atribut koneksi ini dapat dikembalikan oleh SQLGetConnectAttr tetapi tidak dapat diatur oleh SQLSetConnectAttr.
SQL_ATTR_AUTOCOMMIT (ODBC 1.0) Nilai SQLUINTEGER yang menentukan apakah akan menggunakan mode autocommit atau penerapan manual:

SQL_AUTOCOMMIT_OFF = Driver menggunakan mode penerapan manual, dan aplikasi harus secara eksplisit menerapkan atau mengembalikan transaksi dengan SQLEndTran.

SQL_AUTOCOMMIT_ON = Driver menggunakan mode autocommit. Setiap pernyataan diterapkan segera setelah dijalankan. Ini adalah default. Setiap transaksi terbuka pada koneksi dilakukan ketika SQL_ATTR_AUTOCOMMIT diatur ke SQL_AUTOCOMMIT_ON untuk berubah dari mode penerapan manual ke mode autocommit.

Untuk informasi selengkapnya, lihat Mode Penerapan. Penting: Beberapa sumber data menghapus rencana akses dan menutup kursor untuk semua pernyataan pada koneksi setiap kali pernyataan diterapkan; mode autocommit dapat menyebabkan hal ini terjadi setelah setiap pernyataan nonkueri dijalankan atau ketika kursor ditutup untuk kueri. Untuk informasi selengkapnya, lihat jenis informasi SQL_CURSOR_COMMIT_BEHAVIOR dan SQL_CURSOR_ROLLBACK_BEHAVIOR di SQLGetInfo dan Efek Transaksi pada Kursor dan Pernyataan yang Disiapkan.

Ketika batch dijalankan dalam mode autocommit, dua hal dimungkinkan. Seluruh batch dapat diperlakukan sebagai unit yang dapat diotomatiskan, atau setiap pernyataan dalam batch diperlakukan sebagai unit yang dapat diotomatiskan. Sumber data tertentu dapat mendukung perilaku ini dan dapat menyediakan cara memilih satu atau yang lain. Ini didefinisikan driver apakah batch diperlakukan sebagai unit yang dapat dikomit otomatis atau apakah setiap pernyataan individu dalam batch dapat dikomit otomatis.
SQL_ATTR_CONNECTION_DEAD

(ODBC 3.5)
Nilai SQLUINTEGER baca-saja yang menunjukkan status koneksi. Jika SQL_CD_TRUE, koneksi telah hilang. Jika SQL_CD_FALSE, koneksi masih aktif.
SQL_ATTR_CONNECTION_TIMEOUT (ODBC 3.0) Nilai SQLUINTEGER yang sesuai dengan jumlah detik untuk menunggu permintaan apa pun pada koneksi selesai sebelum kembali ke aplikasi. Driver harus mengembalikan SQLSTATE HYT00 (Waktu habis kedaluwarsa) kapan saja waktunya mungkin habis dalam situasi yang tidak terkait dengan eksekusi kueri atau masuk.

Jika ValuePtr sama dengan 0 (default), tidak ada batas waktu.
SQL_ATTR_CURRENT_CATALOG (ODBC 2.0) String karakter yang berisi nama katalog yang akan digunakan oleh sumber data. Misalnya, di SQL Server, katalog adalah database, sehingga driver mengirim pernyataan database USE ke sumber data, di mana database adalah database yang ditentukan dalam *ValuePtr. Untuk driver tingkat tunggal, katalog mungkin merupakan direktori, sehingga driver mengubah direktori saat ini ke direktori yang ditentukan dalam *ValuePtr.
SQL_ATTR_DBC_INFO_TOKEN (ODBC 3.8 Nilai SQLPOINTER yang digunakan untuk mengatur kembali token info koneksi ke dalam handel DBC saat parameter SQLRateConnection (*pRating) tidak sama dengan 100.

SQL_ATTR_DBC_INFO_TOKEN diatur-saja. Tidak dimungkinkan untuk menggunakan SQLGetConnectAttr atau SQLGetConnectOption untuk mengambil nilai ini. SQLSetConnectAttr Manajer Driver tidak akan menerima SQL_ATTR_DBC_INFO_TOKEN, karena aplikasi tidak boleh mengatur atribut ini.

Jika driver mengembalikan SQL_ERROR setelah mengatur SQL_ATTR_DBC_INFO_TOKEN, koneksi yang baru saja diperoleh dari kumpulan akan dibebaskan. Manajer Driver kemudian akan mencoba untuk mendapatkan koneksi lain dari kumpulan. Lihat Mengembangkan Kesadaran Kumpulan Koneksi di Driver ODBC untuk informasi selengkapnya.
SQL_ATTR_ENLIST_IN_DTC (ODBC 3.0) Nilai SQLPOINTER yang menentukan apakah akan menggunakan driver ODBC dalam transaksi terdistribusi yang dikoordinasikan oleh Microsoft Component Services.

Berikan objek transaksi DTC OLE yang menentukan transaksi yang akan diekspor ke SQL Server, atau SQL_DTC_DONE untuk mengakhiri asosiasi DTC koneksi.

Klien memanggil metode Microsoft Distributed Transaction Coordinator (MS DTC) OLE ITransactionDispenser::BeginTransaction untuk memulai transaksi MS DTC dan membuat objek transaksi MS DTC yang mewakili transaksi. Aplikasi kemudian memanggil SQLSetConnectAttr dengan opsi SQL_ATTR_ENLIST_IN_DTC untuk mengaitkan objek transaksi dengan koneksi ODBC. Semua aktivitas database terkait akan dilakukan di bawah perlindungan transaksi MS DTC. Aplikasi memanggil SQLSetConnectAttr dengan SQL_DTC_DONE untuk mengakhiri asosiasi DTC koneksi. Untuk informasi selengkapnya, lihat dokumentasi MS DTC.
SQL_ATTR_LOGIN_TIMEOUT (ODBC 1.0) Nilai SQLUINTEGER yang sesuai dengan jumlah detik untuk menunggu permintaan masuk selesai sebelum kembali ke aplikasi. Defaultnya adalah tergantung pada driver. Jika ValuePtr adalah 0, batas waktu dinonaktifkan dan upaya koneksi akan menunggu tanpa batas waktu.

Jika batas waktu yang ditentukan melebihi batas waktu masuk maksimum di sumber data, driver menggantikan nilai tersebut dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah).
SQL_ATTR_METADATA_ID (ODBC 3.0) Nilai SQLUINTEGER yang menentukan bagaimana argumen string fungsi katalog diperlakukan.

Jika SQL_TRUE, argumen string fungsi katalog diperlakukan sebagai pengidentifikasi. Kasus ini tidak signifikan. Untuk string yang tidak dibatasi, driver menghapus spasi berikutnya dan string dilipat ke huruf besar. Untuk string yang dibatasi, driver menghapus spasi di depan atau belakang dan mengambil secara harfiah apa pun di antara pemisah. Jika salah satu argumen ini diatur ke penunjuk null, fungsi mengembalikan SQL_ERROR dan SQLSTATE HY009 (Penggunaan pointer null tidak valid).

Jika SQL_FALSE, argumen string fungsi katalog tidak diperlakukan sebagai pengidentifikasi. Kasus ini signifikan. Mereka dapat berisi pola pencarian string atau tidak, tergantung pada argumen.

Nilai defaultnya adalah SQL_FALSE.

Argumen TableType dari SQLTables, yang mengambil daftar nilai, tidak dipengaruhi oleh atribut ini.

SQL_ATTR_METADATA_ID juga dapat diatur pada tingkat pernyataan. (Ini adalah satu-satunya atribut koneksi yang juga merupakan atribut pernyataan.)

Untuk informasi selengkapnya, lihat Argumen di Fungsi Katalog.
SQL_ATTR_ODBC_CURSORS (ODBC 2.0) Nilai SQLULEN yang menentukan bagaimana Manajer Driver menggunakan pustaka kursor ODBC:

SQL_CUR_USE_IF_NEEDED = Manajer Driver menggunakan pustaka kursor ODBC hanya jika diperlukan. Jika driver mendukung opsi SQL_FETCH_PRIOR di SQLFetchScroll, Driver Manager menggunakan kemampuan pengguliran driver. Jika tidak, ia menggunakan pustaka kursor ODBC.

SQL_CUR_USE_ODBC = Manajer Driver menggunakan pustaka kursor ODBC.

SQL_CUR_USE_DRIVER = Driver Manager menggunakan kemampuan pengguliran driver. Ini adalah pengaturan default.

Untuk informasi selengkapnya tentang pustaka kursor ODBC, lihat Lampiran F: Pustaka Kursor ODBC. Peringatan: Pustaka kursor akan dihapus di windows versi mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Microsoft merekomendasikan penggunaan fungsionalitas kursor driver.
SQL_ATTR_PACKET_SIZE (ODBC 2.0) Nilai SQLUINTEGER yang menentukan ukuran paket jaringan dalam byte. Catatan: Banyak sumber data tidak mendukung opsi ini atau hanya dapat mengembalikan tetapi tidak mengatur ukuran paket jaringan.

Jika ukuran yang ditentukan melebihi ukuran paket maksimum atau lebih kecil dari ukuran paket minimum, driver mengganti nilai tersebut dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah).

Jika aplikasi menetapkan ukuran paket setelah koneksi dibuat, driver akan mengembalikan SQLSTATE HY011 (Atribut tidak dapat diatur sekarang).
SQL_ATTR_QUIET_MODE (ODBC 2.0) Handel jendela (HWND).

Jika handel jendela adalah penunjuk null, driver tidak menampilkan kotak dialog apa pun.

Jika handel jendela bukan penunjuk null, itu harus menjadi handel jendela induk aplikasi. Ini adalah default. Pengandar menggunakan handel ini untuk menampilkan kotak dialog. Catatan: Atribut koneksi SQL_ATTR_QUIET_MODE tidak berlaku untuk kotak dialog yang ditampilkan oleh SQLDriverConnect.
SQL_ATTR_TRACE (ODBC 1.0) Nilai SQLUINTEGER yang memberi tahu Manajer Driver apakah akan melakukan pelacakan:

SQL_OPT_TRACE_OFF = Pelacakan nonaktif (default)

SQL_OPT_TRACE_ON = Pelacakan aktif

Saat pelacakan aktif, Manajer Driver menulis setiap panggilan fungsi ODBC ke file pelacakan. Catatan: Saat pelacakan aktif, Driver Manager dapat mengembalikan SQLSTATE IM013 (Lacak kesalahan file) dari fungsi apa pun.

Aplikasi menentukan file pelacakan dengan opsi SQL_ATTR_TRACEFILE. Jika file sudah ada, Manajer Driver akan menambahkan ke file. Jika tidak, file akan dibuat. Jika pelacakan aktif dan tidak ada file jejak yang ditentukan, Manajer Driver menulis ke file SQL. LOG di direktori akar.

Aplikasi dapat mengatur variabel ODBCSharedTraceFlag untuk mengaktifkan pelacakan secara dinamis. Pelacakan kemudian diaktifkan untuk semua aplikasi ODBC yang saat ini berjalan. Jika aplikasi menonaktifkan pelacakan, aplikasi dinonaktifkan hanya untuk aplikasi tersebut.

Jika kata kunci Jejak dalam informasi sistem diatur ke 1 saat aplikasi memanggil SQLAllocHandle dengan HandleType SQL_HANDLE_ENV, pelacakan diaktifkan untuk semua handel. Ini diaktifkan hanya untuk aplikasi yang disebut SQLAllocHandle.

Memanggil SQLSetConnectAttr dengan Atribut SQL_ATTR_TRACE tidak mengharuskan argumen ConnectionHandle valid dan tidak akan mengembalikan SQL_ERROR jika ConnectionHandle NULL. Atribut ini berlaku untuk semua koneksi.
SQL_ATTR_TRACEFILE (ODBC 1.0) String karakter null-terminated yang berisi nama file pelacakan.

Nilai default atribut SQL_ATTR_TRACEFILE ditentukan dengan kata kunci TraceFile dalam informasi sistem. Untuk informasi selengkapnya, lihat Subkunjung ODBC.

Memanggil SQLSetConnectAttr dengan Atribut SQL_ATTR_TRACEFILE tidak mengharuskan argumen ConnectionHandle valid dan tidak akan mengembalikan SQL_ERROR jika ConnectionHandle tidak valid. Atribut ini berlaku untuk semua koneksi.
SQL_ATTR_TRANSLATE_LIB (ODBC 1.0) String karakter null-terminated yang berisi nama pustaka yang berisi fungsi SQLDriverToDataSource dan SQLDataSourceToDriver yang diakses driver untuk melakukan tugas seperti terjemahan set karakter. Opsi ini dapat ditentukan hanya jika driver telah tersambung ke sumber data. Pengaturan atribut ini akan bertahan di seluruh koneksi. Untuk informasi selengkapnya tentang menerjemahkan data, lihat DLL Terjemahan dan Referensi Fungsi DLL Terjemahan.
SQL_ATTR_TRANSLATE_OPTION (ODBC 1.0) Nilai bendera 32-bit yang diteruskan ke DLL terjemahan. Atribut ini hanya dapat ditentukan jika driver telah tersambung ke sumber data. Untuk informasi tentang menerjemahkan data, lihat DLL Terjemahan.
SQL_ATTR_TXN_ISOLATION (ODBC 1.0) Bitmask 32-bit yang mengatur tingkat isolasi transaksi untuk koneksi saat ini. Aplikasi harus memanggil SQLEndTran untuk menerapkan atau mengembalikan semua transaksi terbuka pada koneksi, sebelum memanggil SQLSetConnectAttr dengan opsi ini.

Nilai yang valid untuk ValuePtr dapat ditentukan dengan memanggil SQLGetInfo dengan InfoType sama dengan SQL_TXN_ISOLATION_OPTIONS.

Untuk deskripsi tingkat isolasi transaksi, lihat deskripsi jenis informasi SQL_DEFAULT_TXN_ISOLATION di SQLGetInfo dan Tingkat Isolasi Transaksi.

[1] Fungsi-fungsi ini dapat dipanggil secara asinkron hanya jika deskriptor adalah deskriptor implementasi, bukan pendeskripsi aplikasi.

Contoh Kode

Lihat SQLConnect.

Untuk informasi tentang Lihat
Mengalokasikan handel Fungsi SQLAllocHandle
Mengembalikan pengaturan atribut koneksi Fungsi SQLGetConnectAttr

Lihat Juga

Referensi API ODBC
File Header ODBC