题
我想要运行一个长时间运行的 SQL 语句,无论我在连接字符串的“timeout=”子句中放入什么内容,它似乎总是在 30 秒后结束。
我只是在使用 SqlHelper.ExecuteNonQuery()
执行它,并让它负责打开连接等。
还有其他什么可能会覆盖我的超时,或导致 sql server 忽略它吗?我已经对查询运行了探查器,并且当我在 Management Studio 中运行它时,与在我的代码中运行它时,跟踪看起来没有任何不同。
Management studio 在大约一分钟内完成查询,但即使将超时设置为 300 或 30000,我的代码仍然会在 30 秒后超时。
解决方案
您使用什么来设置连接字符串中的超时?从记忆中,这是“ConnectionTimeout”,仅影响实际所需的时间 连接 到服务器。
每个单独的命令都有一个单独的“CommandTimeout”,这就是您正在寻找的。但不确定 SqlHelper 如何实现。
其他提示
除了连接字符串中的超时之外, 尝试使用 SQL 命令的超时属性。下面是使用 SqlCommand 类的 C# 示例。其等效项应该适用于您正在使用的内容。
SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
不隶属于 StackOverflow