每隔一段时间,ADO就提示“通讯链接失败”

时间:2022-12-20 15:53:18
1. 用MFC开发的一个基于数据库操作的程序。程序刚刚启动好时,通过程序界面进行数据库操作都很正常,但过了大约十几分钟后就出现数据库操作失败的提示。程序有记录ADO错误,错误提示是“通讯链接失败”。
2. 安装在其他机器上都没有问题(安装过大约50台机器)。但遇到有两台机器,都发现这样的问题。和其他能正常运行的机器一样,这两台机器都是XP操作系统,没有联网。但有一个区别,就是这两台机器都同时安装有SQL Server个人版和MSDE版。原来怀疑第一台的操作系统或硬件有问题,于是换了一台机器,并用正版的XP安装盘在新的机器上重装了。但问题依旧。分析程序记录的ADO错误日志。发现在其他正常执行的机器上也有两种ADO错误:"连接占线导致另一个 hstmt"和SQL语句执行超时错误,但没有没有发现“通讯链接失败”和其他类型的错误。

下面是不正常的一台机器上的ADO错误日志:

ADO Error:Code = 80004005; Time =2008-10-22 18::00:45.265;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
ADO Error:Code = 80004005; Time =2008-10-24 02::57:45.968;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
ADO Error:Code = 80004005; Time =2008-10-24 04::30:46.546;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
ADO Error:Code = 80004005; Time =2008-10-24 06::27:45.312;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionWrite (send()).
ADO Error:Code = 80004005; Time =2008-10-24 06::27:46.203;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:46.843;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead (recv()).
ADO Error:Code = 80004005; Time =2008-10-24 06::27:50.062;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:54.703;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionWrite (send()).
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.093;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead (recv()).
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.109;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.109;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.171;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.171;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.234;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.234;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.234;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.281;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.406;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败
ADO Error:Code = 80004005; Time =2008-10-24 06::27:55.406;Code meaning = 未指定的错误;Source = Microsoft OLE DB Provider for ODBC Drivers;Description = [Microsoft][ODBC SQL Server Driver]通讯链接失败

不知问题出现在哪里,应该如何解决。谢谢大家。

16 个解决方案

#1


把这个错误号。
在Msnd或微 软 网站上查查,看具体什么原因。一般还能够查到解决办法的。

#2


两种ADO错误:"连接占线导致另一个 hstmt"和SQL语句执行超时错误

-->>会不会是你打开的连接太多了?

#3


程序和数据库都在同一台机器上,连接数有限制吗?而且其他机器也有"连接占线导致另一个 hstmt"和SQL语句执行超时错误,但是却没有“通讯链接失败”的错误。80004005是一个很笼统的错误提示代码,表示的是一大类错误,在MSDN和网上能查到的资料都和我这个问题不大相关。

#4


数据库连接用过之后就断开

#5


引用 3 楼 AaronLieu 的回复:
程序和数据库都在同一台机器上,连接数有限制吗?而且其他机器也有"连接占线导致另一个 hstmt"和SQL语句执行超时错误,但是却没有“通讯链接失败”的错误。80004005是一个很笼统的错误提示代码,表示的是一大类错误,在MSDN和网上能查到的资料都和我这个问题不大相关。 

当然有限制了,SQL Server本身就有连接数限制,根是否本机没有关系.  不过很容易检查出来,把你的程序运行起来,当要出错的时候,打开SQL Server的状态监视器,看看是不是连接很多。

#6


我找到了对应时间段的windows应用程序日志(TC2是我的程序,也是我的SQL Server数据库实例名):

2008-10-24 7:46:08 Disk 警告 无 52 N/A TC2 驱动程序检测到设备 \Device\Harddisk0\DR0 会出故障。 请立即备份您的数据,替换硬盘驱动器。 故障可能会很快发生。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Remote Access Connection Manager 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 TC2\shs TC2 Remote Access Connection Manager 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Telephony 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Computer Browser 服务处于 停止 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Application Layer Gateway Service 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 Application Layer Gateway Service 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Network Location Awareness (NLA) 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 SSDP Discovery Service 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 Network Location Awareness (NLA) 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 SSDP Discovery Service 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Fast User Switching Compatibility 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 Fast User Switching Compatibility 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Terminal Services 服务处于 正在运行 状态。
2008-10-24 6:49:25 EventLog 信息 无 6005 N/A TC2 事件日志服务已启动。
2008-10-24 6:49:25 EventLog 信息 无 6009 N/A TC2 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2 Uniprocessor Free。
2008-10-23 0:50:05 W32Time 警告 无 36 N/A TC2 时间服务已经有 49152 秒不能与系统时间同步,因为没有一个 时间提供程序能提供可用的时间戳。系统时钟没有被同步。
2008-10-22 12:09:34 Disk 警告 无 52 N/A TC2 驱动程序检测到设备 \Device\Harddisk0\DR0 会出故障。 请立即备份您的数据,替换硬盘驱动器。 故障可能会很快发生。

#7


日志是按照时间倒排序的。不好意思,导出日志时,没有将日志按照时间顺排序。

#8


多半是自己代码的问题,对象用过后要销毁。vc6没有自动垃圾回收机制的吧,就算有,自己也应该显式处理。

#9


刚才说错了,第6楼的应该是系统日志,这才是应用程序日志:

2008-10-25 6:52:17 ESENT 信息 常规  100 N/A TC2 wuauclt (2172) 数据库引擎 5.01.2600.2780 已启动。
2008-10-24 6:57:14 ESENT 信息 常规  101 N/A TC2 wuauclt (1184) 数据库引擎已停止。
2008-10-24 6:57:14 ESENT 信息 常规  103 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎停止了实例 (0)。
2008-10-24 6:52:12 ESENT 信息 常规  102 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎启动了新的实例 (0)。
2008-10-24 6:52:12 ESENT 信息 常规  100 N/A TC2 wuauclt (1184) 数据库引擎 5.01.2600.2780 已启动。
2008-10-24 6:50:22 SecurityCenter 信息 无 1800 N/A TC2 已经启动 Windows 安全中心服务。
2008-10-24 6:50:09 MSSQL$TC2 警告 (8) 19011 N/A TC2 事件 ID ( 19011 )的描述(在资源( MSSQL$TC2 )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远端计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: (SpnRegister) : Error 1355.
2008-10-24 6:49:29 Winlogon 信息 无 1001 N/A TC2 Checking file system on C:
The type of the file system is FAT32.


One of your disks needs to be checked for consistency. You
may cancel the disk check, but it is strongly recommended
that you continue.
Windows will now check the disk.                         
Volume Serial Number is 14BE-3CD7
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.rept  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.reph  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.repi  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0000  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0001  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0100  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0101  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0200  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0201  first allocation unit is not valid. The entry will be truncated.
Convert lost chains to files (Y/N)? Yes
184 KB in 9 recovered files.
Windows has made corrections to the file system.
     10231392 KB total disk space.
        30160 KB in 637 hidden files.
        11488 KB in 1398 folders.
      5820136 KB in 19885 files.
      4369600 KB are available.

         8192 bytes in each allocation unit.
      1278924 total allocation units on disk.
       546200 allocation units available on disk.

2008-10-23 11:17:17 ESENT 信息 常规  101 N/A TC2 wuauclt (3488) 数据库引擎已停止。
2008-10-23 11:17:17 ESENT 信息 常规  103 N/A TC2 wuaueng.dll (3488) SUS20ClientDataStore: 数据库引擎停止了实例 (0)。
2008-10-23 11:12:15 ESENT 信息 常规  102 N/A TC2 wuaueng.dll (3488) SUS20ClientDataStore: 数据库引擎启动了新的实例 (0)。
2008-10-23 11:12:15 ESENT 信息 常规  100 N/A TC2 wuauclt (3488) 数据库引擎 5.01.2600.2780 已启动。
2008-10-22 11:17:13 ESENT 信息 常规  101 N/A TC2 wuauclt (1544) 数据库引擎已停止。

#10


有使用线程了吧?

#11


日志显示你的数据库自己停了有重启了,原因可能是系统日志里面的提示--硬盘有问题.

#12


1. 程序是用VC2003开发的,调试时没有发现任何内存泄露,所以应该不存对象用过后没有销毁的问题。
2. 在使用了多线程,由于没有处理好多线程中的数据库连接问题,所以日志中有“连接占线导致另一个 hstmt“的错误。但个人认为不应该是这里导致了本问题。因为其他正常的机器上也有这个“连接占线导致另一个 hstmt”的错误,但是没有出现本问题。正常的机器有大约50台。出现本问题的不正常机器只有2台,而且这两台机器好像硬件配置都是一样的。
3. 网上查了一些资料,包含一些英文的,有人遇到与我类似,但不完全相同的问题。有人分析下来说可能是硬件有问题,也有人说是Windows的自动更新服务有问题。但我的这台有问题的机器,自动更新功能是关闭的,自动更新服务是设置为“自动”的。没有联网,XP,SP2

#13


还有,如果说是硬盘有问题的话,我已经换过一台机器了。不会这么巧,两台机器上的硬盘都有问题吧?

#14


日志分析下来是这样的(以2008-10-24为例,按时间顺序排列):

程序的ADO日志
2008-10-24 02:57:45 连接占线导致另一个 hstmt 
2008-10-24 06:27:45 [DBNETLIB]ConnectionWrite (send()).
2008-10-24 06:27:46 通讯链接失败
2008-10-24 06:27:46 [DBNETLIB]ConnectionRead (recv()). 
2008-10-24 06:27:50 通讯链接失败

应用程序日志:
2008-10-24 6:50:09 MSSQL$TC2 警告 (8) 19011 N/A TC2 事件 ID ( 19011 )的描述(在资源( MSSQL$TC2 )中)无法找到。本地计算
2008-10-24 6:52:12 ESENT 信息 常规 102 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎启动了新的实例 (0)。 
2008-10-24 6:57:14 ESENT 信息 常规 103 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎停止了实例 (0)。 
2008-10-24 6:57:14 ESENT 信息 常规 101 N/A TC2 wuauclt (1184) 数据库引擎已停止。 
2008-10-25 6:52:17 ESENT 信息 常规 100 N/A TC2 wuauclt (2172) 数据库引擎 5.01.2600.2780 已启动。 

系统日志:
2008-10-24 7:46:08 Disk 警告 无 52 N/A TC2 驱动程序检测到设备 \Device\Harddisk0\DR0 会出故障。 请立即备份您的数据,替换硬

盘驱动器。 故障可能会很快发生。 


结论似乎是:
这三段日志好像相互没有太大的关系,因为它们相差的时间太长了。

#15


请问楼主这个问题解决了没有?  我现在也遇到同样的问题

#16


请问楼主这个问题解决了没有?  我现在也遇到同样的问题

同问啊。。情况跟楼主的完全一样。。

只有2台电脑有问题,程序过一段时间不操作就会挂掉(10min+)

#1


把这个错误号。
在Msnd或微 软 网站上查查,看具体什么原因。一般还能够查到解决办法的。

#2


两种ADO错误:"连接占线导致另一个 hstmt"和SQL语句执行超时错误

-->>会不会是你打开的连接太多了?

#3


程序和数据库都在同一台机器上,连接数有限制吗?而且其他机器也有"连接占线导致另一个 hstmt"和SQL语句执行超时错误,但是却没有“通讯链接失败”的错误。80004005是一个很笼统的错误提示代码,表示的是一大类错误,在MSDN和网上能查到的资料都和我这个问题不大相关。

#4


数据库连接用过之后就断开

#5


引用 3 楼 AaronLieu 的回复:
程序和数据库都在同一台机器上,连接数有限制吗?而且其他机器也有"连接占线导致另一个 hstmt"和SQL语句执行超时错误,但是却没有“通讯链接失败”的错误。80004005是一个很笼统的错误提示代码,表示的是一大类错误,在MSDN和网上能查到的资料都和我这个问题不大相关。 

当然有限制了,SQL Server本身就有连接数限制,根是否本机没有关系.  不过很容易检查出来,把你的程序运行起来,当要出错的时候,打开SQL Server的状态监视器,看看是不是连接很多。

#6


我找到了对应时间段的windows应用程序日志(TC2是我的程序,也是我的SQL Server数据库实例名):

2008-10-24 7:46:08 Disk 警告 无 52 N/A TC2 驱动程序检测到设备 \Device\Harddisk0\DR0 会出故障。 请立即备份您的数据,替换硬盘驱动器。 故障可能会很快发生。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Remote Access Connection Manager 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 TC2\shs TC2 Remote Access Connection Manager 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Telephony 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Computer Browser 服务处于 停止 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Application Layer Gateway Service 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 Application Layer Gateway Service 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Network Location Awareness (NLA) 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 SSDP Discovery Service 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 Network Location Awareness (NLA) 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 SSDP Discovery Service 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Fast User Switching Compatibility 服务处于 正在运行 状态。
2008-10-24 6:50:24 Service Control Manager 信息 无 7035 NT AUTHORITY\SYSTEM TC2 Fast User Switching Compatibility 服务成功发送一个 开始 控件。
2008-10-24 6:50:24 Service Control Manager 信息 无 7036 N/A TC2 Terminal Services 服务处于 正在运行 状态。
2008-10-24 6:49:25 EventLog 信息 无 6005 N/A TC2 事件日志服务已启动。
2008-10-24 6:49:25 EventLog 信息 无 6009 N/A TC2 Microsoft (R) Windows (R) 5.01. 2600 Service Pack 2 Uniprocessor Free。
2008-10-23 0:50:05 W32Time 警告 无 36 N/A TC2 时间服务已经有 49152 秒不能与系统时间同步,因为没有一个 时间提供程序能提供可用的时间戳。系统时钟没有被同步。
2008-10-22 12:09:34 Disk 警告 无 52 N/A TC2 驱动程序检测到设备 \Device\Harddisk0\DR0 会出故障。 请立即备份您的数据,替换硬盘驱动器。 故障可能会很快发生。

#7


日志是按照时间倒排序的。不好意思,导出日志时,没有将日志按照时间顺排序。

#8


多半是自己代码的问题,对象用过后要销毁。vc6没有自动垃圾回收机制的吧,就算有,自己也应该显式处理。

#9


刚才说错了,第6楼的应该是系统日志,这才是应用程序日志:

2008-10-25 6:52:17 ESENT 信息 常规  100 N/A TC2 wuauclt (2172) 数据库引擎 5.01.2600.2780 已启动。
2008-10-24 6:57:14 ESENT 信息 常规  101 N/A TC2 wuauclt (1184) 数据库引擎已停止。
2008-10-24 6:57:14 ESENT 信息 常规  103 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎停止了实例 (0)。
2008-10-24 6:52:12 ESENT 信息 常规  102 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎启动了新的实例 (0)。
2008-10-24 6:52:12 ESENT 信息 常规  100 N/A TC2 wuauclt (1184) 数据库引擎 5.01.2600.2780 已启动。
2008-10-24 6:50:22 SecurityCenter 信息 无 1800 N/A TC2 已经启动 Windows 安全中心服务。
2008-10-24 6:50:09 MSSQL$TC2 警告 (8) 19011 N/A TC2 事件 ID ( 19011 )的描述(在资源( MSSQL$TC2 )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远端计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: (SpnRegister) : Error 1355.
2008-10-24 6:49:29 Winlogon 信息 无 1001 N/A TC2 Checking file system on C:
The type of the file system is FAT32.


One of your disks needs to be checked for consistency. You
may cancel the disk check, but it is strongly recommended
that you continue.
Windows will now check the disk.                         
Volume Serial Number is 14BE-3CD7
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.rept  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.reph  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.repi  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0000  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0001  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0100  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0101  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0200  first allocation unit is not valid. The entry will be truncated.
\Documents and Settings\All Users\Application Data\Kaspersky Anti-Virus Personal\5.0\Reports\RptMngBak.i0201  first allocation unit is not valid. The entry will be truncated.
Convert lost chains to files (Y/N)? Yes
184 KB in 9 recovered files.
Windows has made corrections to the file system.
     10231392 KB total disk space.
        30160 KB in 637 hidden files.
        11488 KB in 1398 folders.
      5820136 KB in 19885 files.
      4369600 KB are available.

         8192 bytes in each allocation unit.
      1278924 total allocation units on disk.
       546200 allocation units available on disk.

2008-10-23 11:17:17 ESENT 信息 常规  101 N/A TC2 wuauclt (3488) 数据库引擎已停止。
2008-10-23 11:17:17 ESENT 信息 常规  103 N/A TC2 wuaueng.dll (3488) SUS20ClientDataStore: 数据库引擎停止了实例 (0)。
2008-10-23 11:12:15 ESENT 信息 常规  102 N/A TC2 wuaueng.dll (3488) SUS20ClientDataStore: 数据库引擎启动了新的实例 (0)。
2008-10-23 11:12:15 ESENT 信息 常规  100 N/A TC2 wuauclt (3488) 数据库引擎 5.01.2600.2780 已启动。
2008-10-22 11:17:13 ESENT 信息 常规  101 N/A TC2 wuauclt (1544) 数据库引擎已停止。

#10


有使用线程了吧?

#11


日志显示你的数据库自己停了有重启了,原因可能是系统日志里面的提示--硬盘有问题.

#12


1. 程序是用VC2003开发的,调试时没有发现任何内存泄露,所以应该不存对象用过后没有销毁的问题。
2. 在使用了多线程,由于没有处理好多线程中的数据库连接问题,所以日志中有“连接占线导致另一个 hstmt“的错误。但个人认为不应该是这里导致了本问题。因为其他正常的机器上也有这个“连接占线导致另一个 hstmt”的错误,但是没有出现本问题。正常的机器有大约50台。出现本问题的不正常机器只有2台,而且这两台机器好像硬件配置都是一样的。
3. 网上查了一些资料,包含一些英文的,有人遇到与我类似,但不完全相同的问题。有人分析下来说可能是硬件有问题,也有人说是Windows的自动更新服务有问题。但我的这台有问题的机器,自动更新功能是关闭的,自动更新服务是设置为“自动”的。没有联网,XP,SP2

#13


还有,如果说是硬盘有问题的话,我已经换过一台机器了。不会这么巧,两台机器上的硬盘都有问题吧?

#14


日志分析下来是这样的(以2008-10-24为例,按时间顺序排列):

程序的ADO日志
2008-10-24 02:57:45 连接占线导致另一个 hstmt 
2008-10-24 06:27:45 [DBNETLIB]ConnectionWrite (send()).
2008-10-24 06:27:46 通讯链接失败
2008-10-24 06:27:46 [DBNETLIB]ConnectionRead (recv()). 
2008-10-24 06:27:50 通讯链接失败

应用程序日志:
2008-10-24 6:50:09 MSSQL$TC2 警告 (8) 19011 N/A TC2 事件 ID ( 19011 )的描述(在资源( MSSQL$TC2 )中)无法找到。本地计算
2008-10-24 6:52:12 ESENT 信息 常规 102 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎启动了新的实例 (0)。 
2008-10-24 6:57:14 ESENT 信息 常规 103 N/A TC2 wuaueng.dll (1184) SUS20ClientDataStore: 数据库引擎停止了实例 (0)。 
2008-10-24 6:57:14 ESENT 信息 常规 101 N/A TC2 wuauclt (1184) 数据库引擎已停止。 
2008-10-25 6:52:17 ESENT 信息 常规 100 N/A TC2 wuauclt (2172) 数据库引擎 5.01.2600.2780 已启动。 

系统日志:
2008-10-24 7:46:08 Disk 警告 无 52 N/A TC2 驱动程序检测到设备 \Device\Harddisk0\DR0 会出故障。 请立即备份您的数据,替换硬

盘驱动器。 故障可能会很快发生。 


结论似乎是:
这三段日志好像相互没有太大的关系,因为它们相差的时间太长了。

#15


请问楼主这个问题解决了没有?  我现在也遇到同样的问题

#16


请问楼主这个问题解决了没有?  我现在也遇到同样的问题

同问啊。。情况跟楼主的完全一样。。

只有2台电脑有问题,程序过一段时间不操作就会挂掉(10min+)