SQL Server连接已由远程主机关闭

时间:2019-03-07 17:37:21

标签: c# entity-framework azure azure-sql-database

我目前在基本层上拥有一个由Microsoft Azure托管的SQL Server。在Entity Framework Core中调用db.SaveChanges()时,出现以下错误:

  

从计算机接收结果时发生传输级错误   服务器。 (提供者:TCP提供程序,错误:0-现有连接   被远程主机强行关闭。)

  

Win32Exception:现有连接被强制关闭   远程主机

以前有人可能遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果连接空闲几分钟,则Azure SQL数据库将关闭连接。请创建一个“ KeepAlive”方法,并每5分钟调用一次以保持连接打开。

示例keep alive方法,该方法读取一个很小的表。

private void KeepAlive()
{
    var dummy = _context.BankAccounts.AsNoTracking().ToList().Count;
    Console.WriteLine($@"{DateTime.Now} KeepAlive");
}

如果要处理大量记录然后保存它们,请尝试使用batching处理和保存它们。

您需要考虑的另一件事是对代码实施重试逻辑,以处理瞬态错误,如this文档中所述。

最后一件事,在门户上监视DTU消耗,如果看到DTU消耗达到极限,则可以扩展到标准层。