全局更改命令超时默认值



我们将一些旧软件迁移到新服务器上。我们过去使用SQL Server 2008 Enterprise,现在我们在新机器上使用SQL Server 2014 Enterprise,所以现在应该更快。

旧软件是遗留软件,即将过期,因此我不想花太多精力来修复它。但是由于某种原因,有一个 C# 函数对数据库运行 SQL 查询,我收到

错误消息

超时已过期。操作完成之前经过的超时期限或服务器没有响应。

读到的只是,我必须通过使用CommandTimeout来延长超时时间。但不幸的是,一切都在"上下文连接 = true"下运行。因此,要重建此函数并有机会更改超时,需要相当多的工作。

我在问自己,为什么它在旧机器上运行,而在新机器上不会运行。因此,它必须对新计算机或新的SQL Server引擎执行一些操作。有没有办法更改 .NET Framework 或 SQL Server 中命令的标准超时 30 秒?

非常感谢您的任何建议!

您可以使用

CommandTimeout 属性设置命令的超时:

var cmd = new SqlCommand { CommandTimeout = 60 }

好的,我还没有找到问题的解决方案,但超时并不是问题的根源。我获得了对旧系统的访问权限并运行了一些测试,结果发现旧机器上的相同功能与旧服务器软件的运行速度要快得多,因此没有超时。

因此,我必须专注于服务器速度和数据库调整。

感谢所有忙于这个问题的人!

编辑:

我间接地找到了解决问题的方法。我无法找出为什么在新机器上执行语句需要这么长时间。但事实证明,语句本身使用了表变量。我将它们更改为数据库tempdb中的本地临时表。现在执行时间不到一秒,而不是超过 7 分钟!

对我来说,这看起来像是某些缓存或配置错误的SQL服务器的问题。不幸的是,我不是真正的服务器管理员,我不会使用它。但我会向管理员提及。至少,该程序现在可以完美运行。

最新更新