我想要运行一个长时间运行的 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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top