26

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

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

是否有其他东西可以覆盖我的超时,或导致 sql server 忽略它?我已经对查询运行了探查器,当我在管理工作室中运行它时,与在我的代码中运行它时,跟踪看起来没有任何不同。

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

4

2 回答 2

40

您使用什么来设置连接字符串中的超时?从内存中是“ConnectionTimeout”,仅影响实际连接到服务器所需的时间。

每个单独的命令都有一个单独的“CommandTimeout”,这将是您正在寻找的。不确定 SqlHelper 是如何实现的。

于 2008-08-26T06:08:57.877 回答
14

除了连接字符串中的超时,尝试使用 SQL 命令的超时属性。下面是一个使用 SqlCommand 类的 C# 示例。它的等效项应该适用于您正在使用的内容。

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
于 2008-08-26T06:14:18.813 回答