Aracılığıyla paylaş


SqlClient girişinde yapılandırılabilir yeniden deneme mantığı

Şunlar için geçerlidir: .NET Framework .NET .NET Standard

ADO.NET İndir

Yapılandırılabilir yeniden deneme mantığı, geliştiricilerin ve yöneticilerin geçici hatalar olduğunda uygulama davranışını yönetmelerine olanak tanır. Bu özellik, bir komutun bağlantısı veya yürütülmesi sırasında denetimler ekler. Denetimler kod veya uygulama yapılandırma dosyası aracılığıyla tanımlanabilir. Yeniden deneme davranışını denetlemek için geçici hata numaraları ve yeniden deneme özellikleri tanımlanabilir. Ayrıca, belirli SQL deyimlerini filtrelemek için normal ifadeler kullanılabilir.

Özellik bileşenleri

Bu özellik üç ana bileşenden oluşur:

  1. Temel API'ler: Geliştiriciler ve nesneleri üzerinde SqlConnectionSqlCommand kendi yeniden deneme mantığını uygulamak için bu arabirimleri kullanabilir. Daha fazla bilgi için bkz . SqlClient'da yapılandırılabilir yeniden deneme mantıksal çekirdek API'leri.
  2. Önceden tanımlanmış yapılandırılabilir yeniden deneme mantığı: Çekirdek API'leri kullanan yerleşik yeniden deneme mantığı yöntemlerine sınıfından SqlConfigurableRetryFactory erişilebilir. Daha fazla bilgi için bkz. SqlClient'da iç yeniden deneme mantığı sağlayıcıları.
  3. Yapılandırma dosyası şeması: Bir uygulamada ve SqlConnection için varsayılan yeniden deneme mantığını belirtmek içinSqlCommand. Daha fazla bilgi için bkz . SqlClient ile yapılandırılabilir yeniden deneme mantığı yapılandırma dosyası.

Hızlı başlangıç

Bu özelliği kullanmak için şu adımları izleyin:

  1. kullanarak SqlRetryLogicOptionyeniden deneme mantığı seçeneklerini tanımlayın.
    Bu örnekte, yeniden deneme parametrelerinden bazıları ayarlanır ve geri kalanı varsayılan değerleri kullanır.

    // 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)
    };
    
  2. Nesnenizi SqlRetryLogicOption kullanarak bir yeniden deneme mantığı sağlayıcısı oluşturun.

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  3. örneğini SqlRetryLogicBaseProvider veya SqlConnection.RetryLogicProvideröğesine atayınSqlCommand.RetryLogicProvider.
    Bu örnekte, bağlantı açma komutu iç listedeki geçici hatalardan SqlConfigurableRetryFactory birine en fazla beş kez isabet ederse yeniden dener.

    // 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();
    

Uyarı

Bu adımlar komut yürütme için aynıdır, ancak bunun yerine komutu yürütmeden önce özelliğine SqlCommand.RetryLogicProvider yeniden deneme sağlayıcısı atarsınız.

Ayrıca bakınız