连接字符串中的超时未被遵守

29

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

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

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

管理工作室大约在一分钟内完成查询,但即使设置超时为300或30000,我的代码仍然在30秒后超时。

2个回答

44
你是用什么在连接字符串中设置超时时间的?从记忆中来看,那应该是"ConnectionTimeout",只会影响到实际连接服务器所需的时间。每个单独的命令都有一个独立的"CommandTimeout",这可能是你要寻找的内容。不过我不确定SqlHelper是如何实现它的。

1
太明显了!但这并没有阻止我浪费两个小时错过答案......谢谢! - Aaron
你是在说它不能使用连接字符串进行设置吗?我们现在正在使用 EF,并且没有通过那种方式向数据库发送命令。 - Konrad Viltersten

16

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


除了在连接字符串中设置超时时间外,尝试使用 SQL 命令的超时属性。以下是一个 C# 示例,使用 SqlCommand 类。其等效内容应该适用于您正在使用的内容。
SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接