Entschärfung: PoolsperrfristMitigation: Pool Blocking Period

Die Sperrfrist für den Verbindungspool wurde für Verbindungen mit Azure SQL-Datenbanken entfernt.The connection pool blocking period has been removed for connections to Azure SQL databases.

Zusätzliche BeschreibungAdditional description

Wenn in .NET Framework 4.6.1.NET Framework 4.6.1 und in früherer Versionen eine App einen vorübergehender Verbindungsfehler beim Herstellen der Verbindung mit der Datenbank erkennt, kann der Verbindungsversuch nicht schnell wiederholt werden, da der Fehler vom Verbindungspool gespeichert und zwischen 5 Sekunden und eine Minute lang erneut ausgelöst wird. Weitere Informationen finden Sie unter SQL Server-Verbindungspooling (ADO.NET).In the .NET Framework 4.6.1.NET Framework 4.6.1 and earlier versions, when an app encounters a transient connection failure when connecting to a database, the connection attempt cannot be retried quickly, because the connection pool caches the error and re-throws it for 5 seconds to 1 min. For more information, see SQL Server Connection Pooling (ADO.NET). Dieses Verhalten ist für Verbindungen mit Azure SQL-Datenbanken problematisch, die häufig aufgrund vorübergehender Fehler fehlschlagen, die in der Regel innerhalb weniger Sekunden behoben sind.This behavior is problematic for connections to Azure SQL databases, which often fail with transient errors that are typically recovered from within a few seconds. Das Sperrfeature des Verbindungspools bedeutet, dass die App für einen längeren Zeitraum keine Verbindung mit der Datenbank herstellen kann, auch wenn die Datenbank verfügbar ist.The connection pool blocking feature means that the app cannot connect to the database for an extensive period, even though the database is available. Dieses Verhalten ist besonders problematisch für Web-Apps, die eine Verbindung mit Azure SQL-Datenbanken herstellen und die innerhalb von wenigen Sekunden gerendert werden müssen.This behavior is particularly problematic for web apps that connect to Azure SQL databases and that need to render within a few seconds.

Ab .NET Framework 4.6.2.NET Framework 4.6.2 werden Fehler bei Anforderungen zum Öffnen von Verbindungen mit bekannten Azure SQL-Datenbanken (.database.Windows.NET, *.database.chinacloudapi.cn, *.database.usgovcloudapi.net, *.database.cloudapi.de) nicht zwischengespeichert.Starting with the .NET Framework 4.6.2.NET Framework 4.6.2, for connection open requests to known Azure SQL databases (.database.windows.net, *.database.chinacloudapi.cn, *.database.usgovcloudapi.net, *.database.cloudapi.de), connection open errors are not cached. Für alle anderen Verbindungsversuche wird die Sperrfrist für den Verbindungspool weiterhin erzwungen.For all other connection attempts, the connection pool blocking period continues to be enforced.

AuswirkungenImpact

Diese Änderung ermöglicht die sofortige Wiederholung eines Versuchs zum Öffnen einer Verbindung mit Azure SQL-Datenbanken. Dadurch wird die Leistung von cloudfähigen Apps verbessert.This change allows the connection open attempt to be retried immediately for Azure SQL databases, thereby improving the performance of cloud-enabled apps.

ProblemumgehungMitigation

Für Apps, die von dieser Änderung negativ betroffen sind, kann die Sperrfrist für den Verbindungspool konfiguriert werden, indem die neue PoolBlockingPeriod-Eigenschaft festgelegt wird.For apps that are adversely affected by this change, the connection pool blocking period can be configured by setting the new PoolBlockingPeriod property. Der Wert der Eigenschaft ist ein Mitglied der System.Data.SqlClient.PoolBlockingPeriod-Enumeration, die einen von drei Werten annehmen kann:The value of the property is a member of the System.Data.SqlClient.PoolBlockingPeriod enumeration that can take either of three values:

  • PoolBlockingPeriod.AlwaysBlock

  • PoolBlockingPeriod.Auto

  • PoolBlockingPeriod.NeverBlock

Das vorherige Verhalten kann wiederhergestellt werden, indem Sie die PoolBlockingPeriod-Eigenschaft auf PoolBlockingPeriod.AlwaysBlock festlegen.The previous behavior can be restored by setting the PoolBlockingPeriod property to PoolBlockingPeriod.AlwaysBlock.

Siehe auchSee Also

Änderungen zur LaufzeitRuntime Changes