VB+SQL查询连接超时已过期
现象1:SQL Server 企业管理器里,打开sql 查询分析器,输入select * from View1 where XX 可以执行成功,只是有时查询时间需5-6分钟,有时只需要5—6秒,这时一般软件里查询已很快。服务器和客户端都是相同情况。
现象2:
SQL Server企业管理器,点击"视图",打开视图,返回所有行时,出现错误提示:[Microsoft][ODBC SQL Server Driver]超时已过期.
现象3:
原来出现查询超时在企业管理器里执行一次收缩数据库,就能解决问题,但我把系统恢复一次,做了磁盘清理,分离数据库再附加数据库后之后好像收缩数据也不一定能解决查询超时问题,并且查询数据和数据库日志大小好像没有直接联系。因为设置自动收缩事物日志,执行成功后有时事物日志只有几百K也会超时,有时几十M也不会超时。和电脑重新启动也没有太大关系,有时候重新启动电脑就解决了,有时又不能解决超时。
现象4:
当在查询分析器里查询数据有时很久没有查出结果时,点击取消执行查询会返回查询出的结果,只是结果有一部分还没有查询出来。
现象5:
整个数据库很多表和视图,大部分视图和表查询都正常,不会出现超时现象,也排除数据记录太多问题,因为记录只有1万多条,其它表有几万条记录的都不会超时。在其它很多服务器)测试(包括远程测试)相同数据库都正常,也排除网络问题和数据库本身问题。
现象6:
当超时,如果能将查询结果记录锁定在几条之类,就可以查询出来,查询几十条以上就可能超时了。
现象7:
库连接一直都正常,就是在查询记录模块出错
尝试的解决办法:
1. 在企业管理器里,SQL查询分析器里,软件程序里尝试更改超时连接时间均没有解决。
2. 尝试更改事物日志和数据增长百分比和指定大小均没有解决。
3. 检查数据库错误没有发现错误。
4. 断开所有SQL其它连接事物和退出无关程序均无法解决。
5. 网上查询很多解决办法均没有解决。
望高手给出详细解决方案:
附程序连接模块:
Public Function OpenCn(ByVal Cip As String, ByVal Tz As String, ByVal Users As String, ByVal Pw As String) As Boolean '连接模块 填写数据库等信息
Dim mag As String
On Error GoTo strerrmag
Set conn = New ADODB.Connection
conn.ConnectionTimeout = 0
conn.Provider = "sqloledb"
conn.Properties("data source").Value = Cip '服务器的名字
conn.Properties("initial catalog").Value = Tz '库名
If Cip = "" Or Cip = "127.0.0.1" Then conn.Properties("integrated security").Value = "SSPI"
'conn.Properties("integrated security").Value = "SSPI" '登陆类型,若不要此语句在某些机器以windowns身份无法本地登录。
conn.Properties("user id").Value = Users 'SQL库名
conn.Properties("password").Value = Pw '密码
conn.Open
OpenCn = True
If conn.State = 1 Then addFlag = True
Exit Function
strerrmag:
addFlag = False
OpenCn = False
'Exit Function '连接错误消息
End Function
Public Function openRs(ByVal strsql As String) As Boolean '连接数据库记录集
Dim mag As String
Dim rpy As Boolean
On Error GoTo strerrmag
Set rs = New ADODB.Recordset
If addFlag = False Then rpy = True
With rs
.Properties("Command Time Out") = 300 ‘若按网上说加上这句提示“实时错误3265”,在对用所需名称或序数集合中,未找到项目
.ActiveConnection = conn
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open strsql ‘通过调试,连接超时出错就在这里
End With
addFlag = True
openRs = True
'End '将记录集给rs
Exit Function
strerrmag:
openRs = False
'Exit Function '连接错误消息
End Function