Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: .NET Framework
.NET
.NET Standard
Güvenlik anahtarı etkinleştirildiğinde varsayılan yeniden deneme yöntemi hem hem SqlConfigurableRetryFactory.CreateNoneRetryProviderde SqlConnection için şeklindedirSqlCommand. Yapılandırma dosyası kullanarak farklı bir yeniden deneme yöntemi belirtebilirsiniz.
Yapılandırma bölümleri
Bir uygulamanın varsayılan yeniden deneme mantığı seçenekleri, yapılandırma dosyasının bölümüne aşağıdaki bölümler configSections eklenerek değiştirilebilir:
-
SqlConfigurableRetryLogicConnection: için varsayılan yeniden deneme mantığını belirtmek için SqlConnection.
<section name="SqlConfigurableRetryLogicConnection"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryConnectionSection, Microsoft.Data.SqlClient"/>
-
SqlConfigurableRetryLogicCommand: için varsayılan yeniden deneme mantığını belirtmek için SqlCommand.
<section name="SqlConfigurableRetryLogicCommand"
type="Microsoft.Data.SqlClient.SqlConfigurableRetryCommandSection, Microsoft.Data.SqlClient"/>
Uyarı
Bölümün içinde configuration aşağıdaki yapılandırmalar belirtilmelidir. Bir uygulama yapılandırma dosyası aracılığıyla varsayılan yeniden deneme mantığını yapılandırmak için bu yeni bölümleri bildirin.
Bağlantı bölümü
Aşağıdaki öznitelikler, bir uygulamadaki tüm SqlConnection örnekler için varsayılan yeniden deneme mantığını belirtmek için kullanılabilir:
numberOfTries: Denenecek sayısını ayarlar.
deltaTime: Aralık zaman aralığını nesne TimeSpan olarak ayarlar.
minTime: İzin verilen minimum aralık zaman aralığını nesne TimeSpan olarak ayarlar.
maxTime: nesne olarak TimeSpan izin verilen maksimum aralık zaman aralığını ayarlar.
transientErrors: Yeniden denenecek geçici hata numaralarının listesini ayarlar.
retryMethod: Bir parametre aracılığıyla yeniden deneme yapılandırmasını alan ve bir nesne döndüren bir SqlRetryLogicOptionSqlRetryLogicBaseProvider yeniden deneme yöntemi oluşturucusu belirtir.
retryLogicType: öğesini sağlayan
retryMethodyeniden deneme yöntemi oluşturucularını içeren özel bir yeniden deneme mantığı sağlayıcısı ayarlar. Bu yöntemler içinretryMethodölçütleri karşılamalıdır. Sağlayıcının tam tür adı kullanılmalıdır. Daha fazla bilgi için bkz. Tam tür adlarını belirtme.
Uyarı
Yerleşik yeniden deneme sağlayıcılarını kullanıp kullanmadığınızı belirtmek retryLogicType gerekmez. Yerleşik yeniden deneme sağlayıcılarını bulmak için bkz. SqlClient'da iç yeniden deneme mantığı sağlayıcıları.
Komut bölümü
Aşağıdaki öznitelik, bir uygulamadaki tüm SqlCommand örnekler için de ayarlanabilir:
- authorizedSqlCondition: Belirli SQL deyimlerini filtrelemek için için SqlCommand.CommandText bir ön yeniden deneme normal ifadesi ayarlar.
Uyarı
Normal ifade büyük/küçük harfe duyarlıdır.
Örnekler
yöntemini ve varsayılan geçici hata listesini kullanarak SqlConfigurableRetryFactory.CreateFixedRetryProvider denemeler arasında yaklaşık 1 saniyelik bir gecikmeyle üç kereye kadar bağlantı kurmaya çalışır:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateFixedRetryProvider" numberOfTries ="3" deltaTime ="00:00:01"/>yöntemini ve varsayılan geçici hata listesini kullanarak SqlConfigurableRetryFactory.CreateExponentialRetryProvider denemeler arasında 45 saniyeye kadar gecikmeyle beş kata kadar bağlantı kurmaya çalışır:
<SqlConfigurableRetryLogicConnection retryMethod ="CreateExponentialRetryProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45"/>yöntemini ve varsayılan geçici hata listesini kullanarak 2 ile 30 saniye arasında bir gecikmeyle dört kereye kadar komut yürütmeye SqlConfigurableRetryFactory.CreateIncrementalRetryProvider çalışır:
<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="4" deltaTime ="00:00:02" maxTime ="00:00:30"/>Bir saniyeden bir dakikaya kadar gecikmeyle sekiz kezye kadar bir komut yürütmeye çalışır. 102 veya 997 sözcük
CommandTextve özel durum numaralarını içeren komutlarlaSELECTsınırlıdır. Yerleşik SqlConfigurableRetryFactory.CreateIncrementalRetryProvider yöntemini kullanır:<SqlConfigurableRetryLogicCommand retryMethod ="CreateIncrementalRetryProvider" numberOfTries ="8" deltaTime ="00:00:01" maxTime ="00:01:00" transientErrors="102, 997" authorizedSqlCondition="\b(SELECT)\b"/>
Uyarı
Sonraki iki örnekte, SqlClient'da Yapılandırılabilir yeniden deneme mantıksal çekirdek API'lerinden özel yeniden deneme mantıksal kaynak kodunu bulabilirsiniz. yönteminin CreateCustomProvider uygulamanın yürütme dizinindeki CustomCRL_Doc.CustomRetryCustomCRL_Doc.dll derlemede sınıfında tanımlandığı varsayılır.
Listede 4060, 997 ve 233 hata numaralarıyla 3 ile 45 saniye arasında bir gecikmeyle beş kezye kadar bağlantı kurmaya çalışır ve belirtilen özel yeniden deneme sağlayıcısını kullanır:
<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"/>Bu örnek, önceki gibi davranır:
<SqlConfigurableRetryLogicConnection retryLogicType ="CustomCRL_Doc.CustomRetry, CustomCRL_Doc" retryMethod ="CreateCustomProvider" numberOfTries ="5" deltaTime ="00:00:03" maxTime ="00:00:45" transientErrors ="4060, 997, 233"/>
Uyarı
Yeniden deneme mantığı sağlayıcıları, bir bağlantı veya komutta ilk kullanımda, uygulamanın ömrü boyunca gelecekte kullanmak üzere önbelleğe alınır.
Uyarı
Yeniden deneme mantığı ayarları için bir uygulama yapılandırma dosyasını okurken oluşan hatalar uygulamada hatalara neden olmaz. Bunun yerine varsayılan SqlConfigurableRetryFactory.CreateNoneRetryProvider değer kullanılır.
Yeniden deneme mantığını yapılandırmayla ilgili sorunları doğrulamak veya gidermek için olay kaynağı izlemeyi kullanabilirsiniz. Daha fazla bilgi için bkz. SqlClient'da olay izlemeyi etkinleştirme.