SET MULTI_USER后发生传输级错误

时间:2017-04-18 03:51:15

标签: c# sql

今天我们得到了"传输级别错误已经发生"在运行我们应用程序中最重要的流程之一时,我们客户的一台慢速和低速计算机中发生了死亡错误。

查看SQL日志文件,我看到SET MULTI_USER是错误发生前的最后一个成功语句。

当我查看代码时,我可以看到我们运行多个脚本,然后我们将数据库更改为单用户模式以运行更多脚本,然后我们将其重新置于多用户模式。类似的东西:

ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- Critical Operation
GO
ALTER DATABASE AdventureWorks2012 SET MULTI_USER;

在此脚本之后,我们将使用其他脚本调用数据库来选择表或执行其他操作,但是下一个脚本失败并且出现"传输级错误已发生"

在此查询后避免错误的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

事实证明,在脚本解决问题后立即调用以下代码。

SqlConnection.ClearAllPools();

我不确定为什么这只发生在100个客户中的1个,但这解决了这个问题。 ClearAllPools重置(或清空)连接池