数据库莫名产生“3704”对象被关闭错误!

Eneboy 2006-02-09 09:10:45
我第一次做 Ms-Sql 程序就碰到了一个棘手的问题。
程序运行环境:Win2000+SqlServer2000
开发工具:VB6.0
问题描述:
(1)数据库由8个表组成,写入的表10个字段组成;程序与数据库同时运行在一台服务器上;
(2)程序为一个数据接收程序,从 Tcp/Client 接收数据,然后写入数据库,主模块每次写入10个字段,凭率20分钟一次;辅助模块每隔20秒写入一次数据库,每次写入两个字段。以上写入字节数都不是太大;
(3)部署第一台服务器,Sql数据库经过反复调试通过,运行了15天后发生“3704”对象被关闭错误,此时数据量约400条。发生错误时数据库服务提示“停止”标志,执行“启动”命令新启动系统,问题得到解决。之后约7天,此错误再次发生,此时无法执行数据库“启动命令”。
(4)怀疑是数据库和系统的问题,于是重新做了一台服务器,安装部署了程序。经过120小时测试,数据量累积到了800万条,没有发现问题。只有,由于硬件问题,系统和数据库重新安装并且部署程序,数据库文件得以保留,数据库安装以后此数据库文件被自动加载。继续运行程序,经过10个小时,出现与以上类似错误。

...全文
65 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Eneboy 2006-02-10
高手显身呀!
回复
Eneboy 2006-02-09
(5)数据库部分程序段如下:
Private DB As New ADODB.Connection '系统基本数据库对象
Private adoTable As New ADODB.Recordset
Private strCnnString, strSQLCommand As String
Private strErrDes As String
Private strErrCode As String
Public Function connTest() As Boolean
'----------------------------
'数据库联接"方法"
'----------------------------
On Error GoTo Err:
connTest = False
If gblIsSaveSql Then
'ODBC 信任连接字符串
strCnnString = "Driver={SQL Server};SERVER=127.0.0.1;Database=mkssjk" & _
";Trusted_Connection=yes;"
DB.ConnectionTimeout = 5
DB.ConnectionString = strCnnString
DB.Open strCnnString, "sa", "", -1 '打开连接
'--------------------------------------------------------
Else
'Access 通过OLEDB:
'strCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet" _
' & "OLEDB:database password=basic;Data Source=" & App.Path & "\infoTable.mdb"
strCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & App.Path & "\" & CON_DAT_FILE & ".mdb"
DB.ConnectionTimeout = 5
DB.ConnectionString = strCnnString
End If
'--------------------------------------------------------
With DB
If .State = adStateClosed Then
.Mode = adModeReadWrite
.Open strCnnString
End If
End With

connTest = True
Exit Function
Err:
strErrDes = Err.Description
strErrCode = Err.Number
End Function
Public Function Execute(parStrSql As String) As Boolean
'-----------------------
'方法:Execute数据库执行命令
'-----------------------
On Error GoTo Err:
Execute = False

DB.Execute parStrSql

Execute = True
Exit Function
Err:
strErrDes = Err.Description
strErrCode = str(Err.Number)
End Function
Public Property Get ErrDes() As String
'--------------------------
'属性读取:错误描述读取函数
'--------------------------
ErrDes = strErrDes
End Property
Public Property Get ErrCode() As String
'--------------------------
'属性读取:错误代码读取函数
'-2147467259 服务器没有打开,或者数据库没有找到
'--------------------------
ErrCode = strErrCode
End Property
Public Function SelectSql(parSelectSql As String) As Boolean
'-------------------------
'方法:设置Select 语句
'-------------------------
On Error GoTo Err:
SelectSql = False

strSQLCommand = parSelectSql
If adoTable.State <> 0 Then adoTable.Close
adoTable.Open strSQLCommand, DB, 3, 3
' adoTable.Open strSQLCommand, DB, 1, 3

SelectSql = True
Exit Function
Err:
strErrCode = Err.Number
strErrDes = Err.Description
End Function
Public Function CloseDb() As Boolean
'-------------------------
'方法:关闭数据库
'-------------------------
On Error GoTo Err:
CloseDb = False

DB.Close

CloseDb = True
Exit Function
Err:
strErrCode = Err.Number
strErrDes = Err.Description
End Function
Public Property Get AdoRec() As ADODB.Recordset
'-------------------------
'属性:返回结果集
'-------------------------
Set AdoRec = adoTable
End Property



请问各位高手,什么原因?
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-02-09 09:10
社区公告
暂无公告