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
Artikel ini menunjukkan cara membuat penyedia percobaan ulang eksponensial dan menetapkannya ke sebuah SqlConnection. Penyedia mencoba ulang daftar kesalahan koneksi sementara bawaan driver dan mencoba membuka koneksi hingga lima kali.
Prasyarat
- Microsoft. Data.SqlClient 3.0 atau versi yang lebih baru.
- Sebuah string koneksi untuk SQL Server, Azure SQL Database, Azure SQL Managed Instance, atau database SQL di Microsoft Fabric.
Konfigurasikan penyedia percobaan ulang koneksi
Tentukan opsi percobaan ulang. Biarkan
TransientErrorssebagainullagar penyedia menggunakan daftar kesalahan transien bawaan.// Define the retry logic parameters var options = new SqlRetryLogicOption() { // Tries 5 times before throwing an exception NumberOfTries = 5, // Preferred gap time to delay before retry DeltaTime = TimeSpan.FromSeconds(1), // Maximum gap time for each delay time before retry MaxTimeInterval = TimeSpan.FromSeconds(20) };Buat penyedia dari opsi yang ada.
// Create a retry logic provider SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);Tetapkan penyedia sebelum membuka koneksi.
// Assumes that connection is a valid SqlConnection object // Set the retry logic provider on the connection instance connection.RetryLogicProvider = provider; // Establishing the connection will retry if a transient failure occurs. connection.Open();
NumberOfTries = 5 memungkinkan satu percobaan awal dan hingga empat kali percobaan. Penyedia eksponensial meningkatkan interval antar percobaan dan menambahkan jitter acak.
MaxTimeInterval membatasi setiap penundaan secara individual, bukan total waktu yang berlalu untuk semua percobaan.
Konfigurasikan percobaan ulang perintah
Buat penyedia terpisah dan tetapkan ke SqlCommand.RetryLogicProvider. Atur SqlRetryLogicOption.AuthorizedSqlCondition ke predikat yang mengembalikan nilai true hanya untuk perintah yang dapat diulangi aplikasi Anda dengan aman.
Caution
Penyedia bawaan tidak mencoba ulang perintah ketika koneksi memiliki transaksi aktif. Jika kegagalan sementara membuat transaksi menjadi tidak valid, lakukan rollback dan coba ulang seluruh transaksi. Jangan ulangi hanya pernyataan yang gagal.
Pengaturan SqlRetryLogicOption.TransientErrors menggantikan daftar kesalahan bawaan driver. Untuk memperpanjang baseline tanpa kehilangan default, lihat Perluas daftar kesalahan transien bawaan.