【问题标题】:How to solve TimeOut Expired Problem?如何解决超时过期问题?
【发布时间】:2010-12-06 08:30:28
【问题描述】:

使用 SQL Server 2005 和 VB6

当我执行年度数据或超过 3 个月的数据时,它显示“超时已过期”错误。它没有完全执行。

我的连接字符串

ConnectionString = "Provider=SQLOLEDB.1;" & _
    "Persist Security Info=False; " & _
    "User ID=" & Settings.SQL_Username & _
    "; Password = " & Settings.SQL_Password & "; " & _
    "Initial Catalog=" & Settings.SQL_DatabaseName & ";" & _
    "Data Source=" & Settings.SQL_ServerAddress

我该如何解决这个问题?

请...

【问题讨论】:

  • 你能显示你正在运行的查询吗?通常,可以对查询进行一些简单的更改来提高性能。显然,如果您使查询更快,则无需担心超时。

标签: sql-server vb6 ado


【解决方案1】:

那里没有“黑色巫术魔法” - 要么您可以让您的查询运行得更快(返回更少的数据,改进数据库设计,查找和应用索引,使您的查询执行得更快),或者然后增加您允许的超时在引发超时之前运行的查询。

这是您的两个选择 - 任您选择。

更新:谷歌搜索显示:

Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
cmd.CommandTimeout = 120   ' number of seconds

马克

【讨论】:

  • 在 ConnectionString 本身我必须给出超时或从数据库中选择。我必须提到超时。请
  • 无法在你的连接字符串中解决这个问题。修复查询(优化)并接受上述建议并添加 CommandTimeout 值。
【解决方案2】:

您必须在命令上设置.CommandTimeout。如果在连接字符串中设置它不起作用。

【讨论】:

    【解决方案3】:

    我猜你要么试图拉回大量数据,而且它需要 SQL Server 超过默认的 ADO 超时(30 或 40 秒?)才能拉回这些数据。

    或者它不是真的很多数据,但是你没有在表上得到一个像样的索引 - 所以我会根据你的查询检查索引(执行计划是你的朋友)。

    或者两者兼而有之。

    如果直接在 SQL Management Studio 中运行查询需要多长时间?

    【讨论】:

      【解决方案4】:

      很明显,您正在尝试调出大量数据,而您的数据库为此花费了大量时间。发布您的连接字符串,以便我可以告诉您要更改的参数,以便您可以增加连接超时。

      或者你可以尝试优化你的应用,它应该需要很长时间才能调出数据。

      【讨论】:

      • 我发布了我的连接字符串。
      • 连接超时不太可能是问题 - 连接似乎就位,但发出的 命令 然后超时。您需要设置 .CommandTimeout 属性 - 这不在连接字符串上
      猜你喜欢
      • 2017-01-20
      • 2021-08-07
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 2022-08-14
      • 2011-06-16
      相关资源
      最近更新 更多