连接字符串中未接受超时

时间:2020-03-05 18:43:09  来源:igfitidea点击:

我有一个要运行的长时间运行的SQL语句,无论我在连接字符串的" timeout ="子句中输入什么内容,它似乎总是在30秒后结束。

我只是使用SqlHelper.ExecuteNonQuery()来执行它,并让它负责打开连接等操作。

还有其他可能会覆盖我的超时或者导致sql server忽略它的东西吗?我已经在查询上运行了事件探查器,并且在Management Studio和代码中运行时,跟踪看起来没有什么不同。

Management Studio大约在一分钟内即可完成查询,但是即使将超时设置为300或者30000,我的代码在30秒后仍会超时。

解决方案

回答

我们正在使用什么来设置连接字符串中的超时?来自内存的" ConnectionTimeout",仅影响实际连接到服务器所花费的时间。

每个单独的命令都有一个单独的" CommandTimeout",这就是我们要查找的内容。虽然不确定SqlHelper是如何实现的。

回答

除了连接字符串中的超时外,请尝试使用SQL命令的timeout属性。下面是一个使用SqlCommand类的Csample。其等效项应适用于我们所使用的内容。

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();