2

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

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

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

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

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

非常感谢您的任何建议!

4

2 回答 2

1

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

var cmd = new SqlCommand { CommandTimeout = 60 }
于 2016-02-24T17:55:14.233 回答
0

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

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

感谢所有关注这个问题的人!

编辑:

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

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

于 2016-02-25T16:29:50.410 回答