Sdílet prostřednictvím


Přepínače AppContext v SqlClient

Platí pro: .NET Framework .NET Standard

Stáhnout ADO.NET

Třída AppContext umožňuje SqlClient poskytovat nové funkce a zároveň pokračovat v podpoře volajících, kteří závisejí na předchozím chování. Uživatelé se můžou odhlásit ze změny chování nastavením konkrétních přepínačů AppContext.

Povolení chování při zkrácení desetinných míst

Platí pro: .NET Framework; .NET; .NET Standard

Počínaje Microsoft.Data.SqlClient 2.0 se desetinná data ve výchozím nastavení zaokrouhlují, jak to dělá SQL Server. Pokud chcete povolit předchozí chování zkrácení, můžete nastavit přepínač AppContext Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal při true spuštění aplikace:

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

Povolení spravovaných sítí ve Windows

Týká se: .NET; .NET Standard

(Dostupné od verze 2.0)

Ve Windows sqlClient ve výchozím nastavení používá nativní implementaci síťového rozhraní SNI. Pokud chcete povolit použití spravované implementace SNI, můžete nastavit přepínač AppContext Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows na true spuštění aplikace:

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

Tento přepínač přepne chování ovladače tak, aby používal spravovanou síťovou implementaci v projektech .NET Core 2.1+ a .NET Standard 2.0+ ve Windows a eliminuje všechny závislosti na nativních knihovnách knihovny Microsoft.Data.SqlClient. Slouží pouze pro účely testování a ladění.

Poznámka:

V porovnání s nativní implementací existují některé známé rozdíly. Spravovaná implementace například nepodporuje ověřování systému Windows bez domény.

Zakázání transparentního překladu IP adres sítě

Platí pro: .NET Framework

Transparentní překlad IP adres (TNIR) je revize stávající funkce MultiSubnetFailover. TNIR ovlivňuje posloupnost připojení ovladače v případě, že první vyřešená IP adresa názvu hostitele nereaguje a k názvu hostitele je přidružených více IP adres. TNIR komunikuje s MultiSubnetFailover a poskytuje následující tři sekvence připojení:

  • 0: Jedna IP adresa se pokusí paralelně sledovat všechny IP adresy.
  • 1: Všechny IP adresy se pokouší paralelně
  • 2: Všechny IP adresy se pokusí o jednu po druhé.
TransparentNetworkIPResolution MultiSubnetFailover Chování
Pravdivé Pravdivé 1
Pravdivé Nepravda 0
Nepravda Pravdivé 1
Nepravda Nepravda 2

Funkce TransparentNetworkIPResolution je ve výchozím nastavení povolená. Funkce MultiSubnetFailover je ve výchozím nastavení zakázaná. Chcete-li zakázat TNIR, můžete nastavit přepínač AppContext Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString při true spuštění aplikace:

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

Další informace o nastavení těchto vlastností naleznete v dokumentaci sqlConnection.ConnectionString Vlastnost.

Povolení minimálního časového limitu během přihlášení

Platí pro: .NET Framework; .NET; .NET Standard

Pokud chcete zabránit neomezenému čekání pokusu o přihlášení, můžete nastavit přepínač AppContext Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin na true spuštění aplikace:

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

Zakázání blokujícího chování readAsync

Platí pro: .NET Framework; .NET; .NET Standard

Počínaje verzí 3.0 běží ReadAsync async. Předchozí verze spouští synchronně ReadAsync a blokují volající vlákno v rozhraní .NET Framework. Pokud chcete řídit toto chování blokování, můžete nastavit přepínač AppContext Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlockingtrue nebo false při spuštění aplikace:

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

Povolení chování hodnoty null pro rowversion

Platí pro: .NET Framework; .NET; .NET Standard

Počínaje verzí 3.0, pokud rowversion má hodnotu null, SqlDataReader vrátí DBNull hodnotu místo prázdné byte[]. Chcete-li povolit starší chování vrácení prázdné byte[], povolte přepínač AppContext Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior při spuštění aplikace.

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

Potlačení nezabezpečeného upozornění protokolu TLS

Platí pro: .NET Framework; .NET; .NET Standard

(Dostupné od verze 4.0.1)

Při použití Encrypt=false v připojovacím řetězci se do konzoly zobrazí upozornění zabezpečení, pokud je verze protokolu TLS 1.2 nebo nižší. Toto upozornění lze potlačit povolením následujícího přepínače AppContext při spuštění aplikace:

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

Ignorovat partnera pro převzetí služeb při selhání poskytnutého serverem

Platí pro: .NET Framework; .NET; .NET Standard

(Dostupné od verzí 5.1.8, 6.0.4 a 6.1.3)

Při převzetí služeb při selhání jsou informace o partnerovi převzetí služeb při selhání poskytované serverem upřednostňované před informacemi o partnerovi převzetí služeb při selhání poskytnuté v připojovacím řetězci. Pokud chcete ignorovat informace o partnerovi převzetí služeb při selhání poskytované serverem a zvažovat pouze informace o partnerovi převzetí služeb při selhání poskytnuté v připojovacím řetězci, povolte tento přepínač AppContext při startu aplikace:

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

Viz také

AppContext – třída