Freigeben über


AppContext-Optionen in SqlClient

Gilt für: .NET Framework .NET .NET Standard

Herunterladen von ADO.NET

Die AppContext-Klasse ermöglicht SqlClient das Bereitstellen neuer Funktionen, während weiterhin Aufrufer unterstützt werden, die vom vorherigen Verhalten abhängen. Benutzer können sich gegen Änderungen am Verhalten entscheiden, indem Sie bestimmte AppContext-Optionen festlegen.

Aktivieren des Kürzungsverhaltens für Dezimalzahlen

Gilt für: .NET Framework; .NET; .NET Standard

Ab Microsoft.Data.SqlClient 2.0 werden Dezimaldaten wie bei SQL Server standardmäßig gerundet. Sie können die AppContext-Option "Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal" beim Anwendungsstart auf true festlegen, um das vorherige Kürzungsverhalten zu aktivieren:

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

Aktivieren verwalteter Netzwerke unter Windows

Gilt für: .NET; .NET Standard

(Verfügbar ab Version 2.0)

Unter Windows verwendet SqlClient standardmäßig eine native Implementierung der SNI-Netzwerkschnittstelle. Sie können die AppContext-Option "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows" beim Anwendungsstart auf true festlegen, um die Verwendung einer verwalteten SNI-Implementierung zu aktivieren:

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

Diese Option schaltet das Verhalten des Treibers so um, dass in Projekten in .NET Core 2.1 und höher und in .NET Standard 2.0 und höher unter Windows eine verwaltete Netzwerkimplementierung verwendet wird. Dies beseitigt alle Abhängigkeiten von nativen Bibliotheken für die Microsoft.Data.SqlClient-Bibliothek. Die Option ist nur für Test- und Debugzwecke vorgesehen.

Hinweis

Im Vergleich zur nativen Implementierung gibt es einige bekannte Unterschiede. Beispielsweise unterstützt die verwaltete Implementierung nicht die Windows-Authentifizierung ohne Domäne.

Deaktivieren der transparenten Netzwerk-IP-Adressauflösung

Gilt für: .NET Framework

Die transparente Netzwerk-IP-Adressauflösung (Transparent Network IP Resolution, TNIR) ist eine Überarbeitung des vorhandenen MultiSubnetFailover-Features. TNIR wirkt sich auf die Verbindungssequenz des Treibers aus, wenn die erste aufgelöste IP-Adresse des Hostnamens nicht reagiert und dem Hostnamen mehrere IP-Adressen zugeordnet sind. TNIR interagiert mit MultiSubnetFailover, um die folgenden drei Verbindungssequenzen bereitzustellen:

  • 0: Erst wird eine IP-Adresse ausprobiert, dann alle IP-Adressen gleichzeitig.
  • 1: Die IP-Adressen werden alle gleichzeitig ausprobiert.
  • 2: Die IP-Adressen werden alle nacheinander ausprobiert.
TransparentNetworkIPResolution MultiSubnetFailover Verhalten
True True 1
True False 0
False True 1
False False 2

TransparentNetworkIPResolution ist in der Standardeinstellung aktiviert. MultiSubnetFailover ist in der Standardeinstellung deaktiviert. Sie können die AppContext-Option "Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString" beim Anwendungsstart auf true festlegen, um TNIR zu deaktivieren:

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

Weitere Informationen zum Festlegen dieser Eigenschaften finden Sie in der Dokumentation zur SqlConnection.ConnectionString-Eigenschaft.

Aktivieren eines minimalen Timeouts bei der Anmeldung

Gilt für: .NET Framework; .NET; .NET Standard

Sie können die AppContext-Option Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin beim Anwendungsstart auf true festlegen, um zu verhindern, dass bei einem Anmeldeversuch unbegrenzt gewartet wird:

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

Deaktivieren des blockierenden Verhaltens von ReadAsync

Gilt für: .NET Framework; .NET; .NET Standard

Ab Version 3.0 wird ReadAsync asynchron ausgeführt. Frühere Versionen führen ReadAsync synchron aus und blockieren den aufrufenden Thread auf .NET Framework. Sie können die AppContext-Option Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking beim Anwendungsstart auf true oder false festlegen, um dieses blockierende Verhalten zu steuern:

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

Aktivieren des Nullverhaltens von „rowversion“

Gilt für: .NET Framework; .NET; .NET Standard

Ab Version 3.0 wird von SqlDataReader, wenn „rowversion“ den Wert NULL aufweist, ein DBNull-Wert anstelle eines leeren byte[] zurückgegeben. Wenn wie früher ein leeres byte[] zurückgegeben werden soll, aktivieren Sie die AppContext-Option Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior beim Anwendungsstart.

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

Unterdrücken von Warnungen zu unsicherem TLS

Gilt für: .NET Framework; .NET; .NET Standard

(Verfügbar ab Version 4.0.1)

Bei Verwendung von Encrypt=false in der Verbindungszeichenfolge wird eine Sicherheitswarnung an die Konsole ausgegeben, wenn TLS-Version 1.2 oder niedriger verwendet wird. Diese Warnung kann unterdrückt werden, indem beim Start der Anwendung die folgende AppContext-Option aktiviert wird:

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

Ignoriere den vom Server bereitgestellten Failoverpartner

Gilt für: .NET Framework; .NET; .NET Standard

(Ab Version 5.1.8, 6.0.4 und 6.1.3 verfügbar)

Bei einem Failover werden die vom Server bereitgestellten Failover-Partnerinformationen gegenüber den in der Verbindungszeichenfolge angegebenen bevorzugt. Um Failoverpartnerinformationen vom Server zu ignorieren und nur Failoverpartnerinformationen in der Verbindungszeichenfolge zu berücksichtigen, aktivieren Sie diesen AppContext-Switch beim Starten der Anwendung:

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

Weitere Informationen

AppContext-Klasse