我目前在基本层上拥有一个由Microsoft Azure托管的SQL Server。在Entity Framework Core中调用db.SaveChanges()
时,出现以下错误:
从计算机接收结果时发生传输级错误 服务器。 (提供者:TCP提供程序,错误:0-现有连接 被远程主机强行关闭。)
和
Win32Exception:现有连接被强制关闭 远程主机
以前有人可能遇到过这个问题吗?
答案 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消耗达到极限,则可以扩展到标准层。