我有一个长时间运行的SQL语句,我想运行,无论我在连接字符串的“timeout =”子句中放置什么,它似乎总是在30秒后结束。
我只是使用SqlHelper.ExecuteNonQuery()
来执行它,并让它来处理打开连接等。
还有什么东西可以覆盖我的超时,或导致sql server忽略它吗?我在查询中运行了分析器,当我在管理工作室中运行它时,跟踪看起来没什么不同,而不是我的代码。
管理工作室在大约一分钟内完成查询,但即使超时设置为300或30000,我的代码仍会在30秒后超时。
答案 0 :(得分:39)
您在连接字符串中设置超时的用途是什么?来自“ConnectionTimeout”的内存,仅影响实际连接到服务器所需的时间。
每个单独的命令都有一个单独的“CommandTimeout”,这将是您正在寻找的。不知道SqlHelper是如何实现的。
答案 1 :(得分:14)
除连接字符串中的超时外,尝试使用SQL命令的timeout属性。下面是一个C#示例,使用SqlCommand类。它的等价物应该适用于你正在使用的东西。
SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();