【问题标题】:Is it possible to change default OLEDB connection timeout value? Run-time error (80040e31)是否可以更改默认的 OLEDB 连接超时值?运行时错误 (80040e31)
【发布时间】:2013-07-25 11:46:31
【问题描述】:

我有一个旧版应用程序 (VB),在连接到 SQL Server(可能通过 OLEDB)时遇到超时错误问题。

使用 SQL Profiler,我发现连接在 30 秒后就断开了。

我无权访问源代码,但我扫描了 exe 资源,但在那里找不到任何硬编码的连接字符串超时值。

我认为我最后的机会是在应用程序之外的某个地方更改默认的 OLEDB 超时。

我的问题是:可以更改默认的 OLEDB 超时值吗?


更新

我找到了连接字符串并将超时更改为 300,但它没有帮助...

Provider=SQLOLEDB.1;Persist Security Info=False;User ID=______;Password=______;Initial Catalog=________;Data Source=______;Connect Timeout=300

之后,我尝试用来自不同提供商的连接字符串替换当前连接字符串:ADO.NETODBC 但每次我在 30 秒后收到超时错误 -将死。

附言

我很乐意接受任何建议

【问题讨论】:

  • 有多种方法可以使用 ADO 设置超时,但我认为 30 秒是默认值,因此程序可能根本没有设置超时。在这种情况下,我看不出您如何在已编译的程序中更改它,抱歉... :(
  • 但我相信这个默认的 30 秒值必须在系统的某个地方“硬编码”(驱动程序设置、注册表、全局配置文件或其他...)
  • 如果是连接超时,它显示在分析器中是不是很奇怪?可能是 c 命令超时还是连接后身份验证超时?
  • 当从应用程序执行的查询运行时间超过 30 秒时,连接断开。有时查询执行不到 30 秒并且不会发生超时,但更常见的是,可能每 1 次 10 次,查询执行超过 30 秒并且应用程序抛出超时异常

标签: sql-server vba oledb connection-timeout


【解决方案1】:

连接超时是连接服务器的时间限制,不是执行命令,所以设置它根本没有帮助

【讨论】:

    【解决方案2】:

    有一个名为“连接超时”的属性。您可以将此属性添加到应用程序中可用的连接字符串中。

    以下是具有用户指定超时值的示例连接字符串: (注意:连接超时值始终以秒为单位)

    connectionString="Data Source=ServerName;Initial Catalog=DatabaseName;User ID=sa;Password=tiger;Connect Timeout=200"

    【讨论】:

    • 不不不。我无权访问源代码来更改连接字符串。我寻找替代解决方案 - 不影响源代码
    【解决方案3】:

    我找到了答案here。这是命令超时,必须从特定的command 对象配置。

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2015-12-13
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 2019-07-29
      • 1970-01-01
      • 2021-10-17
      相关资源
      最近更新 更多