我有一个服务结构服务(来宾可执行文件),使用entityframework核心,与sql azure交谈。
我不时会看到以下错误:
A network-related or instance-specific error occurred while establishing a connection
to SQL Server. The server was not found or was not accessible. Verify that the
instance name is correct and that SQL Server is configured to allow remote connections.
(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
似乎是瞬态的,因为有大量数据库事务没有错误发生。当节点忙时,这似乎更多。
我在启动时添加了代码,设置了EnableRetryOnFailure来设置SqlServerRetryingExecutionStrategy:
services.AddEntityFrameworkSqlServer()
.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(_configuration.GetConnectionString("MyDbConnection"),
o => o.EnableRetryOnFailure()))
一个主要的警告是,目前我正在失去上下文,因此我不知道哪些数据正在尝试更新/插入,所以我不知道它是否最终成功。
几个问题:
我已经看到了这个问题:Sql Connection Error 40 Under Load,它感觉很熟悉,但他似乎已经通过调整他的数据库来解决它 - 我将会看到这样做,我正在努力使我的代码更具弹性在数据库问题的情况下。
答案 0 :(得分:0)
如果两个数据库事务之间的时间跨度非常小,则某个版本的EF Core会缓存查询或请求,因此请更新您的软件包以确保使用最新的软件包。 https://kaskelasolutions.com/how-to-add-dynamic-recipients-to-an-email/
检查这些其他链接