Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: .NET Framework
.NET
.NET Standard
Metode coba lagi default ketika sakelar keamanan diaktifkan adalah SqlConfigurableRetryFactory.CreateNoneRetryProvider untuk dan SqlConnectionSqlCommand. Anda dapat menentukan metode coba lagi yang berbeda dengan menggunakan file konfigurasi.
Bagian konfigurasi
Opsi logika coba lagi default untuk aplikasi dapat diubah dengan menambahkan bagian berikut di dalam bagian configSections file konfigurasi:
-
SqlConfigurableRetryLogicConnection: untuk menentukan logika coba lagi default untuk SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
-
SqlConfigurableRetryLogicCommand: untuk menentukan logika coba lagi default untuk SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>
Catatan
Konfigurasi berikut harus ditentukan di dalam bagian configuration . Deklarasikan bagian baru ini untuk mengonfigurasi logika coba lagi default melalui file konfigurasi aplikasi.
Bagian koneksi
Atribut berikut dapat digunakan untuk menentukan logika coba lagi default untuk semua SqlConnection instans dalam aplikasi:
numberOfTries: mengatur berapa kali untuk dicoba.
deltaTime: mengatur interval waktu kesenjangan TimeSpan sebagai objek.
minTime: mengatur interval waktu kesenjangan minimum yang TimeSpan diizinkan sebagai objek.
maxTime: mengatur interval waktu celah maksimum yang TimeSpan diizinkan sebagai objek.
transientErrors: mengatur daftar nomor kesalahan sementara untuk mencoba kembali.
retryMethod: menentukan pembuat metode coba lagi yang menerima konfigurasi coba lagi melalui SqlRetryLogicOption parameter dan mengembalikan SqlRetryLogicBaseProvider objek.
retryLogicType: mengatur penyedia logika coba lagi kustom, yang berisi pembuat metode coba lagi yang menyediakan
retryMethod. Metode ini harus memenuhi kriteria untukretryMethod. Nama jenis penyedia yang sepenuhnya memenuhi syarat harus digunakan. Untuk informasi selengkapnya, lihat Menentukan nama jenis yang sepenuhnya memenuhi syarat.
Catatan
Tidak diharuskan untuk menentukan retryLogicType apakah Anda menggunakan penyedia coba lagi bawaan. Untuk menemukan penyedia coba lagi bawaan, lihat Penyedia logika coba lagi internal di SqlClient.
Bagian perintah
Atribut berikut juga dapat diatur untuk semua SqlCommand instans dalam aplikasi:
- authorizedSqlCondition: Mengatur ekspresi reguler pra-coba lagi untuk SqlCommand.CommandText memfilter pernyataan SQL tertentu.
Catatan
Ekspresi reguler peka huruf besar/kecil.
Contoh
Upaya untuk membuat koneksi hingga tiga kali dengan penundaan sekitar 1 detik antara percobaan dengan menggunakan SqlConfigurableRetryFactory.CreateFixedRetryProvider metode dan daftar kesalahan sementara default:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" numberOfTries ="3" deltaTime ="00:00:01"/>Upaya untuk membuat koneksi hingga lima kali dengan penundaan hingga 45 detik antara percobaan dengan menggunakan SqlConfigurableRetryFactory.CreateExponentialRetryProvider metode dan daftar kesalahan sementara default:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>Upaya untuk menjalankan perintah hingga empat kali dengan penundaan antara 2 dan 30 detik dengan menggunakan SqlConfigurableRetryFactory.CreateIncrementalRetryProvider metode dan daftar kesalahan sementara default:
<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>Mencoba menjalankan perintah hingga delapan kali dengan penundaan dari satu detik hingga satu menit. Ini terbatas pada perintah dengan
CommandTextberisi kataSELECTdan nomor pengecualian 102 atau 997. Ini menggunakan metode bawaan SqlConfigurableRetryFactory.CreateIncrementalRetryProvider :<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00" transientErrors="102, 997" authorizedSqlCondition="\b(SELECT)\b"/>
Catatan
Dalam dua sampel berikutnya, Anda dapat menemukan kode sumber logika coba lagi kustom dari API inti logika coba lagi yang dapat dikonfigurasi di SqlClient. Diasumsikan CreateCustomProvider metode didefinisikan di CustomCRL_Doc.CustomRetry kelas dalam CustomCRL_Doc.dll rakitan yang ada dalam direktori eksekusi aplikasi.
Upaya untuk membuat koneksi hingga lima kali, dengan penundaan antara 3 dan 45 detik, nomor kesalahan 4060, 997, dan 233 dalam daftar, dan menggunakan penyedia coba lagi kustom yang ditentukan:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>Sampel ini berulah seperti yang sebelumnya:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>
Catatan
Penyedia logika coba lagi akan di-cache pada penggunaan pertama pada koneksi atau perintah untuk penggunaan di masa mendatang selama masa pakai aplikasi.
Catatan
Kesalahan apa pun saat membaca file konfigurasi aplikasi untuk pengaturan logika coba lagi tidak akan menyebabkan kesalahan dalam aplikasi. Default SqlConfigurableRetryFactory.CreateNoneRetryProvider akan digunakan sebagai gantinya.
Anda dapat menggunakan pelacakan sumber peristiwa untuk memverifikasi atau memecahkan masalah dengan mengonfigurasi logika coba lagi. Untuk informasi selengkapnya, lihat Mengaktifkan pelacakan peristiwa di SqlClient.