今天我们得到了"传输级别错误已经发生"在运行我们应用程序中最重要的流程之一时,我们客户的一台慢速和低速计算机中发生了死亡错误。
查看SQL日志文件,我看到SET MULTI_USER是错误发生前的最后一个成功语句。
当我查看代码时,我可以看到我们运行多个脚本,然后我们将数据库更改为单用户模式以运行更多脚本,然后我们将其重新置于多用户模式。类似的东西:
ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- Critical Operation
GO
ALTER DATABASE AdventureWorks2012 SET MULTI_USER;
在此脚本之后,我们将使用其他脚本调用数据库来选择表或执行其他操作,但是下一个脚本失败并且出现"传输级错误已发生"
在此查询后避免错误的最佳方法是什么?
答案 0 :(得分:0)
事实证明,在脚本解决问题后立即调用以下代码。
SqlConnection.ClearAllPools();
我不确定为什么这只发生在100个客户中的1个,但这解决了这个问题。 ClearAllPools重置(或清空)连接池