如何解决超时过期问题?

Posted

技术标签:

【中文标题】如何解决超时过期问题?【英文标题】: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

我该如何解决这个问题?

请...

【问题讨论】:

你能显示你正在运行的查询吗?通常,可以对查询进行一些简单的更改来提高性能。显然,如果您使查询更快,则无需担心超时。 【参考方案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 属性 - 这不在连接字符串上

以上是关于如何解决超时过期问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决间歇性 SQL 超时错误

关于查询报表总是"超时已过期"的问题解决

订单超时,活动过期解决方案:php监听redis键重复触发引发事件

ES批量操作超时问题处理

如何允许 链接服务器OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。

如何在过期前延长asp.net中的会话超时