错误19 - 物理连接错误

Kan*_*n M 4 azure hybrid azure-sql-database

从服务器接收结果时发生传输级错误.(提供程序:会话提供程序,错误:19 - 物理连接不可用) - 间歇性地发生,使用混合连接器从Azure API连接到本地数据库

我尝试从应用服务资源(Web API)连接到本地服务器上的SQL数据库.配置经典混合连接端点到内部部署数据库.

Kan*_*n M 7

根本原因 :

在SQL数据库中,"选项"选项卡中有一个属性"自动关闭",默认情况下设置为TRUE.

Azure Service(API)建立与SQL Server的连接时.Azure尝试维护相同的连接池并尝试重用并重新连接到它.

由于我们将"Auto Close as TRUE"设置为SQL数据库,因此SQL数据库会在一段时间后清除现有连接.Azure尝试重新连接已由SQL数据库清除的早期连接.这导致"物理连接不可用 - 错误19".

解:

在SQL db中,转到数据库属性.导航到"OPTIONS"页面并展开自动选项卡,并将"AUTO CLOSE "属性设置为"FALSE".

确保重新启动Azure应用程序和数据库服务器以确保不使用旧连接.

问题解决了.

注意:这是其中一个原因(发生在我身上).

摆脱此错误的另一个有用方法是使用Entity Framework 1.1.0的RETRY LOGIC

services.AddDbContext<DbContext>(options => options.UseSqlServer('yourconnectionstring',
                 sqlServerOptionsAction: sqlOptions =>
                 {
                     sqlOptions.EnableRetryOnFailure(
                         maxRetryCount: 5,
                         maxRetryDelay: TimeSpan.FromSeconds(30),
                         errorNumbersToAdd: new List<int>() { 19 });
                 }));
Run Code Online (Sandbox Code Playgroud)

在重试逻辑中,不包括错误19.因此,您必须传递错误代码19以设置错误代码19的重试逻辑.