全局更改CommandTimeout默认值

时间:2016-02-24 17:45:05

标签: c# .net sql-server command-timeout

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

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

  

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

我读到的全部内容是,我必须使用CommandTimeout来延长超时时间。但不幸的是,一切都在“context connection = true”下运行。因此,重建此函数需要花费很多工作才有机会更改超时。

而且我问自己,为什么这会在旧机器上运行,而不是在新机器上运行。所以它必须对新机器或新的SQL Server引擎做一些事情。有没有办法在.NET Framework或SQL Server中更改命令的标准超时30秒?

非常感谢任何建议!

2 个答案:

答案 0 :(得分:1)

您可以使用CommandTimeout属性设置命令的超时:

var cmd = new SqlCommand { CommandTimeout = 60 }

答案 1 :(得分:0)

好的,我还没有找到问题的解决方案,但是超时并不是问题的根源。我获得了对旧系统的访问并运行了一些测试,结果证明旧机器上使用旧服务器软件的相同功能运行得更快,因此没有超时。

因此,我必须关注服务器速度和数据库调优。

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

修改

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

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