Bagikan melalui


Ketahanan koneksi yang tidak aktif di Driver OLE DB

Berlaku untuk: SQL Server 2014 (12.x) dan Azure SQL Database yang lebih baru

Unduh driver OLE DB

Gambaran Umum

Dimulai dengan Driver Microsoft OLE DB untuk SQL Server versi 18.6.0, ketahanan koneksi memungkinkan driver memulihkan koneksi diam yang rusak secara otomatis.

Diagram berikut menjelaskan cara kerja ketahanan koneksi diam di Driver OLE DB: Diagram Info Ketahanan Koneksi

  1. Pada T1, koneksi dibuat menggunakan IDBInitialize::Initialize.
  2. Tidak ada periode komunikasi antara driver dan server antara T2 dan T3 yang menghasilkan koneksi diam. Selama waktu ini, koneksi jaringan dapat terganggu. Gangguan mungkin seperti perangkat jaringan yang menutup soket diam, atau menempatkan perangkat ke dalam siaga untuk jangka waktu singkat.
  3. Di T3, aplikasi klien mencoba menjalankan perintah menggunakan driver OLE DB (misalnya menggunakan ICommand::Execute. Driver mendeteksi bahwa koneksi rusak dan secara transparan membangun kembali koneksi.

Kata kunci dan properti

Kata kunci Properti Nilai Default Deskripsi
ConnectRetryCount SSPROP_INIT_CONNECT_RETRY_COUNT Nilai Bilangan Bulat antara 0 dan 255 (inklusif) 1 Mengontrol jumlah maksimum upaya koneksi ulang jika koneksi telah rusak. Secara default, satu upaya dilakukan untuk membuat ulang koneksi saat rusak. Nilai 0 berarti tidak ada koneksi ulang yang akan dicoba.
ConnectRetryInterval SSPROP_INIT_CONNECT_RETRY_INTERVAL Bilangan bulat antara 1 dan 60 (inklusif) 10 Waktu dalam detik, di antara setiap upaya coba lagi koneksi. Kata kunci ini diabaikan jika ConnectRetryCount sama dengan 0.

Halaman berikut ini menyediakan informasi selengkapnya tentang pengaturan properti ini:

Jika aplikasi membuat koneksi dengan DBPROP_INIT_PROMPT dan kemudian mencoba menjalankan pernyataan melalui koneksi yang rusak, driver OLE DB tidak akan menampilkan kotak dialog lagi.

Saat mendapatkan status koneksi melalui properti DBPROP_CONNECTIONSTATUS:

  • Selama pemulihan, properti akan mengembalikan DBPROPVAL_CS_INITIALIZED.
  • Jika pemulihan gagal, properti akan mengembalikan DBPROPVAL_CS_COMMUNICATIONFAILURE.

Catatan

Jika batas waktu perintah (DBPROP_COMMANDTIMEOUT di DBPROPSET_ROWSET) telah diatur ke nilai bukan nol dan pemulihan koneksi membutuhkan waktu lebih lama dari batas waktu perintah, koneksi tidak akan dipulihkan.

Pemulihan koneksi dengan eksekusi asinkron

Jika menggunakan eksekusi asinkron dan koneksi perlu dipulihkan, pemulihan koneksi akan terjadi secara sinkron sebelum panggilan asinkron dijalankan. Untuk informasi selengkapnya tentang eksekusi asinkron, lihat Melakukan Operasi Asinkron.

Kesalahan yang diharapkan

Jika pemulihan koneksi gagal, salah satu kesalahan berikut dapat terjadi:

  • Koneksi rusak dan pemulihan tidak dimungkinkan. Driver klien mencoba memulihkan koneksi satu atau beberapa kali dan semua upaya gagal. Tingkatkan nilai ConnectRetryCount untuk meningkatkan jumlah upaya pemulihan.
  • Server tidak mengakui upaya pemulihan, pemulihan koneksi tidak dimungkinkan.
  • Server tidak mempertahankan versi TDS klien yang tepat yang diminta selama upaya pemulihan, pemulihan koneksi tidak dimungkinkan.
  • Server tidak mempertahankan versi utama server yang tepat yang diminta selama upaya pemulihan, pemulihan koneksi tidak dimungkinkan.
  • Koneksi rusak dan pemulihan tidak dimungkinkan. Koneksi ditandai oleh server sebagai tidak dapat dipulihkan. Tidak ada upaya yang dilakukan untuk memulihkan koneksi.
  • Koneksi rusak dan pemulihan tidak dimungkinkan. Koneksi ditandai oleh driver klien sebagai tidak dapat dipulihkan. Tidak ada upaya yang dilakukan untuk memulihkan koneksi.
  • Server tidak mempertahankan enkripsi SSL selama upaya pemulihan, pemulihan koneksi tidak dimungkinkan.