Delen via


AppContext-switches in SqlClient

Van toepassing op: .NET Framework .NET Standard

ADO.NET downloaden

Met de AppContext-klasse kan SqlClient nieuwe functionaliteit bieden terwijl bellers die afhankelijk zijn van het vorige gedrag blijven ondersteunen. Gebruikers kunnen zich afmelden voor een wijziging in het gedrag door specifieke AppContext-switches in te stellen.

Gedrag voor het afkappen van decimalen inschakelen

Van toepassing op: .NET Framework; .NET; .NET Standard

Vanaf Microsoft.Data.SqlClient 2.0 worden decimale gegevens standaard afgerond, zoals wordt gedaan door SQL Server. Als u het vorige gedrag van afkapping wilt inschakelen, kunt u de AppContext-switch Switch.Microsoft.Data.SqlClient.TruncateScaledDecimaltrue instellen op bij het opstarten van de toepassing:

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

Beheerde netwerken inschakelen in Windows

Van toepassing op: .NET; .NET Standard

(Beschikbaar vanaf versie 2.0)

In Windows maakt SqlClient standaard gebruik van een systeemeigen implementatie van de SNI-netwerkinterface. Als u het gebruik van een beheerde SNI-implementatie wilt inschakelen, kunt u de AppContext-switch Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindowstrue instellen op bij het opstarten van de toepassing:

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

Met deze schakeloptie schakelt u het gedrag van het stuurprogramma in om een beheerde netwerk implementatie te gebruiken in .NET Core 2.1+ en .NET Standard 2.0+-projecten in Windows, waardoor alle afhankelijkheden van systeemeigen bibliotheken voor de Microsoft.Data.SqlClient-bibliotheek worden geëlimineerd. Het is alleen bedoeld voor test- en foutopsporingsdoeleinden.

Opmerking

Er zijn enkele bekende verschillen in vergelijking met de systeemeigen implementatie. De beheerde implementatie biedt bijvoorbeeld geen ondersteuning voor Windows-verificatie zonder domein.

Transparante NETWERK-IP-resolutie uitschakelen

Van toepassing op: .NET Framework

Transparent Network IP Resolution (TNIR) is een revisie van de bestaande MultiSubnetFailover-functie. TNIR is van invloed op de verbindingsreeks van het stuurprogramma in het geval dat het eerste opgeloste IP-adres van de hostnaam niet reageert en er meerdere IP-adressen zijn gekoppeld aan de hostnaam. TNIR communiceert met MultiSubnetFailover om de volgende drie verbindingsreeksen te bieden:

  • 0: Er wordt één IP-adres geprobeerd, gevolgd door alle IP-adressen parallel
  • 1: Alle IP-adressen worden parallel geprobeerd
  • 2: Alle IP-adressen worden na elkaar geprobeerd
TransparentNetworkIPResolution MultiSubnetFailover Gedrag
Klopt Klopt 1
Klopt Onwaar 0
Onwaar Klopt 1
Onwaar Onwaar 2

TransparentNetworkIPResolution is standaard ingeschakeld. MultiSubnetFailover is standaard uitgeschakeld. Als u TNIR wilt uitschakelen, kunt u de AppContext-switch Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionStringtrue instellen op bij het opstarten van de toepassing:

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

Zie de documentatie voor de eigenschap SqlConnection.ConnectionString voor meer informatie over het instellen van deze eigenschappen.

Een minimale time-out inschakelen tijdens het aanmelden

Van toepassing op: .NET Framework; .NET; .NET Standard

Als u wilt voorkomen dat een aanmeldingspoging voor onbepaalde tijd wacht, kunt u de AppContext-switch Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogintrue instellen op het opstarten van de toepassing:

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

Blokkerend gedrag van ReadAsync uitschakelen

Van toepassing op: .NET Framework; .NET; .NET Standard

Vanaf versie 3.0 wordt ReadAsync asynchroon uitgevoerd. In eerdere versies wordt ReadAsync synchroon uitgevoerd en wordt de aanroepende thread op .NET Framework geblokkeerd. Als u dit blokkerende gedrag wilt beheren, kunt u de AppContext-switch Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking instellen op true of false bij het opstarten van de toepassing:

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

Null-gedrag voor rowversion inschakelen

Van toepassing op: .NET Framework; .NET; .NET Standard

Vanaf versie 3.0 retourneert SqlDataReader een rijversie een waarde van null DBNull in plaats van een lege byte[]waarde. Als u het verouderde gedrag van het retourneren van een lege lege byte[]wilt inschakelen, schakelt u de AppContext-switch Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior in bij het opstarten van de toepassing.

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

Onveilige TLS-waarschuwing onderdrukken

Van toepassing op: .NET Framework; .NET; .NET Standard

(Beschikbaar vanaf versie 4.0.1)

Wanneer u in de verbindingsreeks gebruikt Encrypt=false , wordt er een beveiligingswaarschuwing naar de console uitgevoerd als de TLS-versie 1.2 of lager is. Deze waarschuwing kan worden onderdrukt door de volgende AppContext-switch in te schakelen bij het opstarten van de toepassing:

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

Servergespecificeerde failoverpartner negeren

Van toepassing op: .NET Framework; .NET; .NET Standard

(Beschikbaar vanaf versie 5.1.8, 6.0.4 en 6.1.3)

Bij een failover heeft de door de server verstrekte informatie over de failoverpartner de voorkeur boven de door de verbindingsreeks verstrekte informatie over de failoverpartner. Schakel deze AppContext-switch in bij het opstarten van de toepassing om informatie van de failoverpartner die is opgegeven door de server te negeren en alleen de informatie van de verbindingsreeks te gebruiken.

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

Zie ook

AppContext-klasse