全局更改 CommandTimeout 默认值
Change CommandTimeout Default Value globally
我们将一些旧软件迁移到了新服务器。我们以前用的是SQL Server 2008 Enterprise,现在在新机器上用的是SQL Server 2014 Enterprise,所以现在应该更快了。
旧软件是遗留软件,即将过期,所以我不想花太多精力去修复它。但由于某种原因,有一个 C# 函数 运行 对我收到错误消息的数据库执行 SQL 查询
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
我只读到,我必须使用 CommandTimeout
来延长超时时间。但不幸的是,所有 运行 都在 "context connection = true" 之下。因此,重建此功能并有机会更改超时需要相当多的工作。
我问自己,为什么这个 运行 在旧机器上,而在新机器上却不行。所以它必须对新机器或新 SQL 服务器引擎做一些事情。有什么方法可以更改 .NET Framework 或 SQL 服务器中命令的标准超时 30 秒?
非常感谢任何建议!
您可以使用 CommandTimeout
属性:
设置命令的超时
var cmd = new SqlCommand { CommandTimeout = 60 }
好的,我还没有找到问题的解决方案,但是超时并不是真正的问题根源。我获得了对旧系统的访问权限并 运行 进行了一些测试,结果证明在旧机器上使用旧服务器软件 运行 的相同功能要快得多,因此没有超时。
因此,我必须专注于服务器速度和数据库调优。
感谢所有认真回答这个问题的人!
编辑:
我找到了解决问题的间接方法。我找不到为什么在新机器上执行语句需要这么长时间。但事实证明,语句本身使用了 table 变量。我将它们更改为数据库 tempdb
中的本地临时 table。现在执行时间不到 1 秒,而不是超过 7 分钟!
对我来说,这似乎是某些缓存或未配置 SQL 服务器的问题。不幸的是,我不是真正的服务器管理员,我不会胡乱摆弄它。但我会向管理员提及。至少,程序 运行 现在很完美。
我们将一些旧软件迁移到了新服务器。我们以前用的是SQL Server 2008 Enterprise,现在在新机器上用的是SQL Server 2014 Enterprise,所以现在应该更快了。
旧软件是遗留软件,即将过期,所以我不想花太多精力去修复它。但由于某种原因,有一个 C# 函数 运行 对我收到错误消息的数据库执行 SQL 查询
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
我只读到,我必须使用 CommandTimeout
来延长超时时间。但不幸的是,所有 运行 都在 "context connection = true" 之下。因此,重建此功能并有机会更改超时需要相当多的工作。
我问自己,为什么这个 运行 在旧机器上,而在新机器上却不行。所以它必须对新机器或新 SQL 服务器引擎做一些事情。有什么方法可以更改 .NET Framework 或 SQL 服务器中命令的标准超时 30 秒?
非常感谢任何建议!
您可以使用 CommandTimeout
属性:
var cmd = new SqlCommand { CommandTimeout = 60 }
好的,我还没有找到问题的解决方案,但是超时并不是真正的问题根源。我获得了对旧系统的访问权限并 运行 进行了一些测试,结果证明在旧机器上使用旧服务器软件 运行 的相同功能要快得多,因此没有超时。
因此,我必须专注于服务器速度和数据库调优。
感谢所有认真回答这个问题的人!
编辑:
我找到了解决问题的间接方法。我找不到为什么在新机器上执行语句需要这么长时间。但事实证明,语句本身使用了 table 变量。我将它们更改为数据库 tempdb
中的本地临时 table。现在执行时间不到 1 秒,而不是超过 7 分钟!
对我来说,这似乎是某些缓存或未配置 SQL 服务器的问题。不幸的是,我不是真正的服务器管理员,我不会胡乱摆弄它。但我会向管理员提及。至少,程序 运行 现在很完美。