积极答复者
ADO连接数据库在Window2003下内存不释放,不断增加

问题
-
使用VC++的MFC编写的应用程序,使用ADO方式连接数据库,SQLServer,Access,
该应用程序在Window 2000, Windows XP, Windows Vista, Windows 7下没有任务问题,
但是该程序在Windows Server 2003下内存不断的增加,从ADO的Open Connection到SELECT查询,插入,所有操作后所有产生的缓存全部都不释放
Windows Server 2003使用的是MDAC 2.8 SP2
鉴于以上情况怀疑可能是MDAC 2.8 SP2与Windows Server 2003的问题?
有大牛们知道么?
(补充:在多台Window Server 2003上试用,不是个别问题)- 已编辑 zewu 2009年12月7日 2:50 补充说明
答案
全部回复
-
产生错误的Windows Server 2003的Dependency数据(有两台电脑,其中一台刚半个月前连续打的SP1,和SP2补丁,另一台直接安装的集成SP2补丁的光盘)
(前一部分为同一DLL但是版本号,文件大小不同,后一部分分别为有问题和没有问题的电脑上DLL依赖关系上多出来的DLL,其它相同部分都已经省略)
Module | TimeStamp | Size |Attuributes| Base | FileVer | ProductVer|ImageVer|LinkerVer |OSVer |SubsystemVerGDI32.DLL 10/23/08 7:45p 284,672 A 0x77BD0000 5.2.3790.4396 5.2.3790.4396 5.2 7.10 5.2 4.10
KERNEL32.DLL 03/22/09 1:07a 1,205,248 A 0x7C800000 5.2.3790.4480 5.2.3790.4480 5.2 7.10 5.2 4.0
MSVCIRT.DLL 03/03/07 5:50p 56,832 A 0x08020000 7.0.3790.4034 5.2.3790.4034 5.2 7.10 5.2 4.10
MSVCRT.DLL 03/03/07 5:50p 349,184 A 0x77B70000 7.0.3790.4034 6.1.8638.4034 5.2 7.10 5.2 4.0
ODBC32.DLL 02/17/07 2:43p 245,760 A 0x4B750000 3.526.3959.0 3.526.3959.0 5.2 7.10 5.2 4.0
OLEAUT32.DLL 12/13/07 3:45p 553,984 A 0x775F0000 5.2.3790.4202 5.2.3790.4202 5.2 5.10 5.2 4.10
SECUR32.DLL 02/04/09 7:41p 65,536 A 0x76EB0000 5.2.3790.4455 5.2.3790.4455 5.2 7.10 5.2 4.0
SHELL32.DLL 06/18/08 4:08a 8,219,136 A 0x7CA10000 6.0.3790.4315 6.0.3790.4315 5.2 5.10 5.2 4.10
WININET.DLL 07/04/09 8:37a 915,456 A 0x40270000 8.0.6001.18806 8.0.6001.18806 6.0 8.0 6.0 5.1IERTUTIL.DLL 07/04/09 8:37a 1,985,536 A 0x40910000 8.0.6001.18806 8.0.6001.18806 6.0 8.0 6.0 5.1
NORMALIZ.DLL 01/07/09 6:20p 23,552 A 0x00400000 6.0.5441.0 6.0.5441.0 6.0 8.0 6.0 5.0
URLMON.DLL 07/04/09 8:37a 1,208,832 A 0x439B0000 8.0.6001.18806 8.0.6001.18806 6.0 8.0 6.0 5.1
未产生错误的Windows Server 2003的Dependency数据(直接安装的集成SP2补丁的光盘)
Module | TimeStamp | Size |Attuributes| Base | FileVer | ProductVer|ImageVer|LinkerVer |OSVer |SubsystemVer
GDI32.DLL 02/17/07 6:42a 282,624 A 0x77BD0000 5.2.3790.3959 5.2.3790.3959 5.2 7.10 5.2 4.10
KERNEL32.DLL 02/17/07 6:57a 1,204,224 A 0x7C800000 5.2.3790.3959 5.2.3790.3959 5.2 7.10 5.2 4.0
MSVCIRT.DLL 03/27/03 8:00p 51,200 A 0x603B0000 7.0.3790.0 5.2.3790.0 5.2 7.10 5.2 4.10
MSVCRT.DLL 02/17/07 6:43a 348,672 A 0x77B70000 7.0.3790.3959 6.1.8638.3959 5.2 7.10 5.2 4.0
ODBC32.DLL 02/17/07 6:43a 245,760 A 0x4B750000 3.526.3959.0 3.526.3959.0 5.2 7.10 5.2 4.0
OLEAUT32.DLL 02/17/07 6:43a 552,960 A 0x775F0000 5.2.3790.3959 5.2.3790.3959 5.2 7.10 5.2 4.10
SECUR32.DLL 02/17/07 6:43a 65,024 A 0x76EB0000 5.2.3790.3959 5.2.3790.3959 5.2 7.10 5.2 4.0
SHELL32.DLL 02/17/07 6:56a 8,218,112 A 0x7CA10000 6.0.3790.3959 6.0.3790.3959 5.2 7.10 5.2 4.10
WININET.DLL 02/17/07 6:54a 655,872 A 0x779E0000 6.0.3790.3959 6.0.3790.3959 5.2 7.10 5.2 4.0CRYPT32.DLL 02/17/07 6:59a 586,752 A 0x760A0000 5.131.3790.3959 5.131.3790.3959 5.2 7.10 5.2 4.0
MSASN1.DLL 02/17/07 6:43a 57,344 A 0x76080000 5.2.3790.3959 5.2.3790.3959 5.2 7.10 5.2 4.0 -
使用Component Checker Version2.0检查与MDAC 2.8 SP2 on Windows Server 2003 SP2作比较分析得到的差别是
没有内存释放问题的2003系统仅有一项,为注册表值:
HKEY_LOCAL_MACHINE\SOFTWARE\classes\MSDASC Registry Expected : data=Microsoft Data Link;
该处在简体中文版系统中显示为:Microsoft 数据连接,帮检测为差别,无实质问题
在有内存释放问题的2003系统中除上一项差别外还一项,在C:\Windows\Sytem32下,为文件差别:
msxml3.dll 正常的版本号为8.80.1185.0
而有问题的两台电脑该文件版本号均为 8.100.1048.0
难道此文件msxml3.dll就导致了内存不能释放的问题?与ADO的数据操作有关系么?疑问之.