Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 全局更改CommandTimeout默认值_C#_.net_Sql Server_Command Timeout - Fatal编程技术网

C# 全局更改CommandTimeout默认值

C# 全局更改CommandTimeout默认值,c#,.net,sql-server,command-timeout,C#,.net,Sql Server,Command Timeout,我们把一些旧软件移植到一台新服务器上。过去我们使用SQL Server 2008 Enterprise,现在我们在新机器上使用SQL Server 2014 Enterprise,因此现在应该更快 旧软件是遗留软件,即将过期,因此我不想花太多精力来修复它。但出于某种原因,有一个C#函数对我得到错误消息的数据库运行SQL查询 超时已过期。操作完成前已过超时时间,或者服务器没有响应 我所读到的是,我必须使用CommandTimeout来延长超时时间。但不幸的是,一切都在“context connec

我们把一些旧软件移植到一台新服务器上。过去我们使用SQL Server 2008 Enterprise,现在我们在新机器上使用SQL Server 2014 Enterprise,因此现在应该更快

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

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

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

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


谢谢你的建议

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

var cmd = new SqlCommand { CommandTimeout = 60 }

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

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

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

编辑:

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


对我来说,这看起来像是缓存或SQL server配置失败的问题。不幸的是,我不是真正的服务器管理员,我不会玩弄它。但我会向管理人员提到这一点。至少,该程序现在运行得很好。

谢谢您的回答,但是
CommandTimeout
在使用
SqlConnection
context connection=true
时无法工作。我想知道为什么我必须更改代码,因为它已经在旧机器上运行了。所以这是一个SQLCLR问题?这两个系统之间存在差异:SQL 2008链接到CLR v2.0和.NET Framework v3.5,而SQL 2014至少链接到CLR 4.0和.NET Framework 4.0,但将使用您安装的最新版本。为了获得更好的帮助,您需要在问题中提供更多关于代码正在做什么的细节。好吧,这只是一个间接的SQLCLR问题,因为.NET Framework导致了超时问题。但是,如果我从源代码中获取SQL语句并直接在ManagementStudio中执行,则执行所需的时间太长。因此,这确实是SQL语句(或服务器)本身的问题。但是,幸运的是,我找到了一个解决方案(如上所述)!无论如何,谢谢你的回答!好的,如果在SQLCLR对象之外仍然需要7分钟,那么是的,显然SQLCLR不是问题所在。这个信息不在问题中。看看你的更新,你的术语令人困惑。当你说“虚拟表”时,你是指表变量(以
@
开头)?当您说“数据库tempdb中的用户定义表”时,您是指本地临时表(以
#
开头)吗?它可能不是配置错误的SQL Server。如果您在问题中发布了查询,将更容易帮助确定问题,尤其是现在知道了什么有帮助。