【问题标题】:sql: set connection timeout in the connection stringsql:在连接字符串中设置连接超时
【发布时间】:2017-04-10 11:55:25
【问题描述】:

在控制台应用程序中,我有一个这样的连接字符串:

Data Source=localhost;Initial Catalog=database_name;Integrated Security=True;Connect Timeout=100

我已阅读 here,我需要将 Connect Timeout 添加到连接字符串以设置超时,但如果我运行包含

的查询
WAITFOR DELAY '00:00:40';

我会得到一个超时异常,所以连接字符串的时间输出似乎被忽略了。那么如何在连接字符串中设置超时时间(而不是在连接或命令对象上)?

【问题讨论】:

  • 你是如何使用这个的?通过 SqlConnection 对象?您可以设置一个 Timeout 属性......
  • 但是我只需要在连接字符串中设置超时时间,因为这个字符串会被用来创建很多连接...
  • 字符串中的连接超时仅影响连接到服务器所需的时间,而不影响执行查询。唯一的办法就是在SqlConnection和SqlCommand对象上设置对不起

标签: sql connection-string connection-timeout


【解决方案1】:

有两个与 SQL 连接/命令相关的超时 - 有一个 连接 超时,它会影响您尝试打开连接时愿意等待的时间,还有一个 命令 影响正在执行的单个命令等待多长时间的超时。

您需要调整其中的第二个 - 例如在SqlCommand 对象上设置CommandTimeout 属性。

【讨论】:

  • 有没有办法在连接字符串中设置命令超时?
  • 我从未听说过。但这并不意味着没有。你不是说它有效吗(即抛出了超时异常)?
  • @BudaGavril - 不,没有。默认的 30 秒并非不合理。这应该是您需要设置更长/无限超时的异常情况。
  • 是的,我正在一个非常大的表上创建索引(超过 4 giga 只是表)...
  • @BudaGavril - 是的,所以您需要它用于该命令,而不是用于针对连接运行的每个命令。
【解决方案2】:

它没有被忽略,这就是行为......如果超时,它会抛出异常。如果它没有超时,它将一直运行直到查询返回。

只需使用 try-catch 块并在抛出异常时执行您想要的操作。

【讨论】:

  • 好的,但是有没有办法在连接字符串中将超时设置为 10 分钟?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多