Aracılığıyla paylaş


SqlClient'da AppContext anahtarları

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

ADO.NET indirin

AppContext sınıfı, SqlClient'ın önceki davranışa bağımlı arayanları desteklemeye devam ederken yeni işlevler sağlamasına olanak tanır. Kullanıcılar belirli AppContext anahtarları ayarlayarak davranış değişikliğini geri çevirebilir.

Ondalık kesme davranışını etkinleştirme

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

Microsoft.Data.SqlClient 2.0'dan başlayarak, SQL Server tarafından yapıldığı gibi ondalık veriler varsayılan olarak yuvarlanr. Önceki kesme davranışını etkinleştirmek için uygulama başlangıcında "Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal"true AppContext anahtarını ayarlayabilirsiniz:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal", true);

Windows'da yönetilen ağı etkinleştirme

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

(Sürüm 2.0'dan itibaren kullanılabilir)

Windows'da SqlClient varsayılan olarak SNI ağ arabiriminin yerel bir uygulamasını kullanır. Yönetilen SNI uygulamasının kullanımını etkinleştirmek için uygulama başlangıcında "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows"true AppContext anahtarını ayarlayabilirsiniz:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);

Bu anahtar, windows üzerinde .NET Core 2.1+ ve .NET Standard 2.0+ projelerinde yönetilen ağ uygulamasını kullanmak için sürücünün davranışını değiştirir ve Microsoft.Data.SqlClient kitaplığı için yerel kitaplıklardaki tüm bağımlılıkları ortadan kaldırır. Yalnızca test ve hata ayıklama amaçlıdır.

Uyarı

Yerel uygulamayla karşılaştırıldığında bazı bilinen farklılıklar vardır. Örneğin, yönetilen uygulama etki alanı dışı Windows Kimlik Doğrulamasını desteklemez.

Saydam Ağ IP Çözümlemesini Devre Dışı Bırakma

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

Saydam Ağ IP Çözümlemesi (TNIR), mevcut MultiSubnetFailover özelliğinin bir düzeltmesidir. Ana bilgisayar adının ilk çözümlenen IP'sinin yanıt vermemesi ve ana bilgisayar adıyla ilişkilendirilmiş birden çok IP olması durumunda TNIR, sürücünün bağlantı sırasını etkiler. TNIR, aşağıdaki üç bağlantı dizisini sağlamak için MultiSubnetFailover ile etkileşim kurar:

  • 0: Bir IP denendi ve ardından tüm IP'ler paralel olarak izleniyor
  • 1: Tüm IP'ler paralel olarak deneniyor
  • 2: Tüm IP'ler birbiri ardına deneniyor
TransparentNetworkIPResolution MultiSubnetFailover Davranış
Doğru Doğru 1
Doğru Yanlış 0
Yanlış Doğru 1
Yanlış Yanlış 2

TransparentNetworkIPResolution varsayılan olarak etkindir. MultiSubnetFailover varsayılan olarak devre dışıdır. TNIR'yi devre dışı bırakmak için uygulama başlangıcında "Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString"true AppContext anahtarını ayarlayabilirsiniz:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString", true);

Bu özellikleri ayarlama hakkında daha fazla bilgi için SqlConnection.ConnectionString Özelliği belgelerine bakın.

Oturum açma sırasında en düşük zaman aşımını etkinleştirme

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

Oturum açma girişiminin süresiz olarak beklemesini önlemek için, uygulama başlangıcında Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogintrue AppContext anahtarını ayarlayabilirsiniz:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin", false);

ReadAsync'in engelleme davranışını devre dışı bırakma

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

Sürüm 3.0'dan itibaren ReadAsync zaman uyumsuz olarak çalışır. Önceki sürümler ReadAsync'i zaman uyumlu olarak çalıştırır ve .NET Framework'te çağıran iş parçacığını engeller. Bu engelleme davranışını denetlemek için AppContext anahtarını Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking olarak true veya false uygulama başlangıcında ayarlayabilirsiniz:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking", false);

Rowversion null davranışını etkinleştirme

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

Sürüm 3.0'dan başlayarak, rowversion değeri null olduğunda boş SqlDataReaderDBNullyerine bir byte[] değer döndürür. Boş byte[]bir değer döndürmenin eski davranışını etkinleştirmek için uygulama başlangıcında Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior AppContext anahtarını etkinleştirin.

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior", true);

Güvenli olmayan TLS uyarılarını gizleme

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

(Sürüm 4.0.1'den itibaren kullanılabilir)

Bağlantı dizesinde kullanırken Encrypt=false , TLS sürümü 1.2 veya daha düşükse konsola bir güvenlik uyarısı gönderilir. Bu uyarı, uygulama başlatıldığında aşağıdaki AppContext anahtarı etkinleştirilerek gizlenebilir:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.SuppressInsecureTLSWarning", true);

Sunucu Tarafından Sağlanan Yük Devretme İş Ortağını Yoksay

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

(5.1.8, 6.0.4 ve 6.1.3 sürümlerinden itibaren kullanılabilir)

Yük devretme işleminden sonra, sunucu tarafından sağlanan yük devretme iş ortağı bilgileri, bağlantı dizesinde sağlanan yük devretme iş ortağı bilgileri yerine tercih edilir. Sunucu tarafından sağlanan yük devretme iş ortağı bilgilerini yoksaymak ve yalnızca bağlantı dizesinde sağlanan yük devretme iş ortağı bilgilerini göz önünde bulundurmak için, uygulama başlangıcında bu AppContext anahtarını etkinleştirin:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);

Ayrıca bakınız

AppContext Sınıfı