Kan*_*n M 4 azure hybrid azure-sql-database
从服务器接收结果时发生传输级错误.(提供程序:会话提供程序,错误:19 - 物理连接不可用) - 间歇性地发生,使用混合连接器从Azure API连接到本地数据库
我尝试从应用服务资源(Web API)连接到本地服务器上的SQL数据库.配置经典混合连接端点到内部部署数据库.
根本原因 :
在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的重试逻辑.
| 归档时间: |
|
| 查看次数: |
4138 次 |
| 最近记录: |