小编Bry*_*man的帖子

解决VB6中的ADO超时问题

我在VB6中填充ADO记录集时遇到了问题.当我使用SSMS运行它时,查询(命中SQLServer 2008)只需要大约1秒的时间.当结果集很小时它工作正常,但是当它成为几百条记录时需要很长时间.800多条记录需要大约5分钟才能返回(查询在SSMS中仅需要1秒),而6000+记录需要大约20分钟.我通过增加命令超时来"修复"异常,但我想知道是否有办法让它更快地工作,因为它似乎不是需要这么多时间的实际查询.诸如压缩结果之类的东西,所以它不需要那么长时间.记录集打开如下:

myConnection.CommandTimeout = 2000
myConnection.ConnectionString = "Provider=SQLOLEDB;" & _
        "Initial Catalog=DB_NAME;" & _
        "Data Source=SERVER_NAME" & _
        "Network Library=DBMSSOCN;" & _
        "User ID=USER_NAME;" & _
        "Password=PASSWORD;" & _
        "Use Encryption for Data=True;"
myConnection.Open

myRecordSet.Open STORED_PROC_QUERY_STRING, myConnection, adOpenStatic, adLockReadOnly
Set myRecordSet.ActiveConnection = Nothing

myConnection.Close
Run Code Online (Sandbox Code Playgroud)

数据返回用于填充组合框的3列.

更新:我运行SQL事件探查器,来自客户端计算机的实例进行更多读取,并且比SSMS中的查询的两个度量标准花费更多时间100倍.根据探查器,SSMS和客户端计算机的查询文本是相同的,因此我认为它不应该使用不同的执行计划.网络图书馆或提供商可能会对此产生任何影响吗?

Profiler统计:

  • 从客户端应用程序:7041720读取,59458毫秒持续时间,3900行计数
  • 从SSMS:30802读取,238毫秒持续时间,3900行计数

看起来它正在使用不同的执行计划,但查询完全相同,我不确定如何检查客户端可能正在使用的执行计划,如果它与SSMS中显示的不同.

sql vb6 timeout ado

5
推荐指数
1
解决办法
8921
查看次数

标签 统计

ado ×1

sql ×1

timeout ×1

vb6 ×1