如何解决超时过期问题?
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
属性 - 这不在连接字符串上以上是关于如何解决超时过期问题?的主要内容,如果未能解决你的问题,请参考以下文章
订单超时,活动过期解决方案:php监听redis键重复触发引发事件