使用SQL Server 2005和VB6
当我执行年度数据或超过3个月的数据时,它显示“Timeout Expired”错误。它没有完全执行。
我的连接字符串
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
如何解决这个问题?
... PLZ
答案 0 :(得分:17)
那里没有“黑巫毒魔法” - 你可以让你的查询更快(返回更少的数据,改进数据库设计,查找并应用使你的查询执行得更快的索引),或者然后增加你允许的超时在抛出超时之前运行的查询。
这是你的两个选择 - 接受你的选择。
更新:有点谷歌搜索显示:
Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
cmd.CommandTimeout = 120 ' number of seconds
马克
答案 1 :(得分:3)
您必须在命令上设置.CommandTimeout
。如果在连接字符串中设置它,它将不起作用。
答案 2 :(得分:1)
我猜你要么试图撤回大量数据,要么SQL Server超过默认的ADO超时(30或40秒?)来拉回数据。
或者它并不是真的很多数据,但你没有一个合适的索引 - 所以我会根据你的查询检查索引(执行计划是你的朋友)。
或者两者兼而有之。
如果直接在SQL Management Studio中运行查询,该查询需要多长时间?
答案 3 :(得分:0)
显然,您正在尝试提供大量数据,而您的数据库正在花费大量时间来执行此操作。发布您的连接字符串,以便我可以告诉您要更改的参数,以便延长连接时间。
或者您可以尝试优化您的应用,提取数据需要花费很长时间。