“内存不足”错误 [英] "Out of memory" error

查看:122
本文介绍了“内存不足”错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,


这可能是没有解决方法的事情之一。我是使用A2K2的
,并使用它来执行非常大的批量输出。前面的
和后端都是MDB文件,因此这里不涉及任何SQL Server。 SP3和

Jet SP8都已更新,该平台在双处理器上运行

3Ghz Xeon Win2K3服务器盒,带2GB RAM。


批处理运行输出6或7个报告到大约16-17,000个快照

文件除了

包含13个报告之外,没有一个报告特别复杂子报表,放置在组页眉和页脚中,并根据记录集的内容动态隐藏

,以及两个图表

对象。只有一个报告上有图形(一个链接的bmp,​​保存在图像控件中的
)。在循环过程中,几个记录集被初始化并且

关闭(正确设置为Nothing)。


大约10,000件物品后,我得到一个那里没有足够的内存

来执行此操作。关闭所有需要的程序......等等。使操作继续的唯一方法是退出Access并从

失败点重新启动。任务管理器显示msaccess.exe使用大约65MB,并且大量

金额报告为免费。


我查看了几个SP3后的修补程序,但他们似乎没有对这种情况适用

,因为我没有在数据表和

设计视图或使用SQL Server之间切换任何项目。


如果有人可以对此有所了解或建议修复/解决方法,我会非常感激。


Shane。

Hi all,

This might be one of those things for which there is no workaround. I''m
using A2K2, and using it to perform a very large batch ouput. Both the front
and back ends are MDB files, so no SQL Server involved here. Both SP3 and
Jet SP8 have been updated, and the platform is running on a dual-processor
3Ghz Xeon Win2K3 Server box with 2GB RAM.

The batch run outputs 6 or 7 reports to approximately 16-17,000 snapshot
files None of the reports is particularly complex except for one which
contains 13 subreports, placed in the group headers and footers and are
dynamically hidden based on the contents of a recordset, and two chart
objects. Only one of the reports has a graphic on it (a linked bmp, held in
an image control). During the loop, several recordsets are initialised and
closed (properly set to Nothing).

After approximately 10,000 or so items, I get a "There isn''t enough memory
to perform this operation. Close any needed programs...etc.". The only way
to get the operation to continue is to quit Access and restart from the
failed point. Task Manager shows about 65MB in use by msaccess.exe and large
amounts reported as free.

I have looked at a couple of post-SP3 hotfixes, but they don''t seem to apply
to this situation as I''m not switching any items between datasheet and
design view or using SQL Server.

If anyone could shed any light on this or suggest a fix/workaround, I''d be
very grateful.

Shane.

推荐答案

Shane Suebsahakarn写道:
Shane Suebsahakarn wrote:
大家好,

是没有解决方法的事情之一。我正在使用A2K2,并使用它来执行非常大的批量输出。前端和后端都是MDB文件,因此这里不涉及SQL Server。 SP3和
Jet SP8都已更新,平台运行在双处理器的3Ghz Xeon Win2K3服务器盒上,内存为2GB。

批量运行输出6或7报告大约16-17,000个快照
文件除了包含13个子报告的报告之外,没有一个报告特别复杂,放在组头和页脚中并且基于记录集的内容,以及两个图表
对象。只有一个报告上有图形(链接的bmp,​​在图像控件中保存)。在循环过程中,几个记录集被初始化并关闭(正确设置为Nothing)。

在大约10,000个项目之后,我得到一个没有足够的内存
执行此操作。关闭所有需要的程序......等等。使操作继续的唯一方法是退出Access并从
失败点重新启动。任务管理器显示msaccess.exe使用大约65MB,并且大量报告为免费。

我看过几个SP3后的修补程序,但他们似乎没有应用这种情况,因为我没有在数据表和设计视图之间切换任何项目或使用SQL Server。

如果有人可以对此有所了解或建议修复/解决方法,我会非常感激。

Shane。
Hi all,

This might be one of those things for which there is no workaround. I''m
using A2K2, and using it to perform a very large batch ouput. Both the front
and back ends are MDB files, so no SQL Server involved here. Both SP3 and
Jet SP8 have been updated, and the platform is running on a dual-processor
3Ghz Xeon Win2K3 Server box with 2GB RAM.

The batch run outputs 6 or 7 reports to approximately 16-17,000 snapshot
files None of the reports is particularly complex except for one which
contains 13 subreports, placed in the group headers and footers and are
dynamically hidden based on the contents of a recordset, and two chart
objects. Only one of the reports has a graphic on it (a linked bmp, held in
an image control). During the loop, several recordsets are initialised and
closed (properly set to Nothing).

After approximately 10,000 or so items, I get a "There isn''t enough memory
to perform this operation. Close any needed programs...etc.". The only way
to get the operation to continue is to quit Access and restart from the
failed point. Task Manager shows about 65MB in use by msaccess.exe and large
amounts reported as free.

I have looked at a couple of post-SP3 hotfixes, but they don''t seem to apply
to this situation as I''m not switching any items between datasheet and
design view or using SQL Server.

If anyone could shed any light on this or suggest a fix/workaround, I''d be
very grateful.

Shane.



----- BEGIN PGP SIGNED消息-----

哈希:SHA1



您是否将这些文件发送给客户?每个文件都是他们的版本

报告?


你做的是这样的事情:


获取客户ID

对于每个客户ID

打印客户的年度报告

下一位客户


如果是这样,也许你应该在

For..Next循环中调用DoEvents函数。也许这将允许Access在下一次报告之前恢复内存。


-

MGFoster ::: mgf00<在> earthlink< decimal-point> net

奥克兰,加利福尼亚州(美国)


-----开始PGP SIGNATURE -----

版本: PGP for Personal Privacy 5.0

Charset:noconv


iQA / AwUBQiOSnYechKqOuFEgEQLvZACcC58p + EMBmOMeShzi8gD7Yw E6JK4AoImd

TkOe4SkmFV7 + JJEeJqTxEbIm

= Vcba

----- END PGP SIGNATURE -----


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

16,000 to 17,000 Snapshot files! I''ve got to ask, why so many?

Are you sending these files to customers? Each file is their version of
the report?

Are you doing something like this:

Get customer IDs
For each customer ID
Print the customer''s annual report
Next customer

If so, maybe you should put a call to the DoEvents function in the
For..Next loop. Maybe that will allow Access to recover memory before
the next report.

--
MGFoster:::mgf00 <at> earthlink <decimal-point> net
Oakland, CA (USA)

-----BEGIN PGP SIGNATURE-----
Version: PGP for Personal Privacy 5.0
Charset: noconv

iQA/AwUBQiOSnYechKqOuFEgEQLvZACcC58p+EMBmOMeShzi8gD7Yw E6JK4AoImd
TkOe4SkmFV7+JJEeJqTxEbIm
=Vcba
-----END PGP SIGNATURE-----


Shane Suebsahakarn写道:
Shane Suebsahakarn wrote:
大家好,

这可能是没有解决方法的事情之一。我正在使用A2K2,并使用它来执行非常大的批量输出。前端和后端都是MDB文件,因此这里不涉及SQL Server。 SP3和
Jet SP8都已更新,平台运行在双处理器的3Ghz Xeon Win2K3服务器盒上,内存为2GB。

批量运行输出6或7报告大约16-17,000个快照
文件除了包含13个子报告的报告之外,没有一个报告特别复杂,放在组头和页脚中并且基于记录集的内容,以及两个图表
对象。只有一个报告上有图形(链接的bmp,​​在图像控件中保存)。在循环过程中,几个记录集被初始化并关闭(正确设置为Nothing)。

在大约10,000个项目之后,我得到一个没有足够的内存
执行此操作。关闭所有需要的程序......等等。使操作继续的唯一方法是退出Access并从
失败点重新启动。任务管理器显示msaccess.exe使用大约65MB,并且大量报告为免费。

我看过几个SP3后的修补程序,但他们似乎没有应用这种情况,因为我没有在数据表和设计视图之间切换任何项目或使用SQL Server。

如果有人可以对此有所了解或建议修复/解决方法,我将非常感激。

谢恩。
Hi all,

This might be one of those things for which there is no workaround. I''m
using A2K2, and using it to perform a very large batch ouput. Both the front
and back ends are MDB files, so no SQL Server involved here. Both SP3 and
Jet SP8 have been updated, and the platform is running on a dual-processor
3Ghz Xeon Win2K3 Server box with 2GB RAM.

The batch run outputs 6 or 7 reports to approximately 16-17,000 snapshot
files None of the reports is particularly complex except for one which
contains 13 subreports, placed in the group headers and footers and are
dynamically hidden based on the contents of a recordset, and two chart
objects. Only one of the reports has a graphic on it (a linked bmp, held in
an image control). During the loop, several recordsets are initialised and
closed (properly set to Nothing).

After approximately 10,000 or so items, I get a "There isn''t enough memory
to perform this operation. Close any needed programs...etc.". The only way
to get the operation to continue is to quit Access and restart from the
failed point. Task Manager shows about 65MB in use by msaccess.exe and large
amounts reported as free.

I have looked at a couple of post-SP3 hotfixes, but they don''t seem to apply
to this situation as I''m not switching any items between datasheet and
design view or using SQL Server.

If anyone could shed any light on this or suggest a fix/workaround, I''d be
very grateful.

Shane.




Access是一个快速的应用程序开发平台 - 桌面数据库。

Microsoft创建它。人们可以理解为什么它的效率非常低;

它必须容纳非常无能的用户,而它的创造者从来没有,或者是b $ b IMO,关心效率。它总是,购买更多的硬件!。


对于你的16000-17000文件访问可能会做足够的工作

16000000-17000000,主要是因为它是猪。


解决方案可能是编写VBA代码,创建16000-17000 html

文件,写每个完成后到磁盘,并重用所有内存

涉及的变量。 (当然,VBA本身并不是奖品,但那是另一个故事)。我已经完成了类似于家谱的页面,

和ftp-ed(带代码)完成后到远程服务器的每个文件。


-

-

Lyle

-

来自ADO28.chm


不推荐使用的组件

以下每个组件都被视为已过时。虽然这个版本的微软仍然支持这些

组件?数据

访问组件(MDAC),将来可能会将其删除。当

编写新的应用程序时,你应该避免使用这些已弃用的

组件。修改现有应用程序时,强烈建议您删除对这些组件的依赖。


ODBC提供程序(MSDASQL)

强烈建议您使用其中一个本机OLE DB提供程序

而不是Microsoft开放式数据库连接(ODBC)提供程序。

本机OLE DB提供程序提供更好的应用程序稳定性和

表现。此外,未来将在

中支持本机OLE DB提供程序,而MSDASQL将不会添加任何新功能,

将无法在64位上使用, OLE将无法访问OLE

DB NET数据提供程序。


远程数据服务(RDS)
远程数据服务(RDS)是一种专有的Microsoft机制,用于通过Internet或Intranet访问远程数据。
。微软现在提供微软简单对象访问协议(SOAP)工具包2.0

,使您能够使用基于XML的开放式访问远程数据

标准。鉴于SOAP Toolkit 2.0的可用性,您应该将
从RDS迁移到SOAP。 SOAP 2.0 Toolkit 2.0还包括用于远程访问Microsoft ActiveX的示例

代码?数据对象(ADO)

记录集。


Jet和复制对象(JRO)

Microsoft Jet OLE DB提供程序和其他从MDAC 2.6中删除相关组件

。 Microsoft已弃用Microsoft Jet

引擎,并且不计划为此组件提供新版本或服务包。

因此,Jet和复制对象(JRO)正在在此版本中已弃用

,将来不会在任何MDAC版本中提供。


.....



Access is a rapid application development platform - desktop database.
Microsoft creates it. One can understand why it is horribly inefficient;
it must accommodate very incapable users, and its creator has never,
IMO, cared anything about efficiency. It''s always, "Buy more hardware!".

For your 16000-17000 files Access is likely to be doing enough work for
16000000-17000000, mostly because it''s a pig.

A solution might be to write VBA code that creates 16000-17000 html
files, writing each to disk upon completion, and reusing all the memory
variables involved. (Of course, VBA itself is no prize, but that''s
another story). I have done something like this with genealogical pages,
and ftp-ed (with code) each file to a remote server upon completion.

--
--
Lyle
--
From ADO28.chm

Deprecated Components
Each of the following components is considered obsolete. While these
components are still supported in this release of the Microsoft? Data
Access Components (MDAC), they may be removed in the future. When
writing new applications, you should avoid using these deprecated
components. When modifying existing applications, you are strongly
encouraged to remove any dependency on these components.

ODBC Provider (MSDASQL)
You are strongly encouraged to use one of the native OLE DB Providers
instead of the Microsoft Open Database Connectivity (ODBC) Provider.
Native OLE DB Providers provide better application stability and
performance. Furthermore, native OLE DB Providers will be supported in
the future, whereas MSDASQL will not have any new features added to it,
will not be available on 64-bit, and will not be accessible from the OLE
DB NET Data Provider.

Remote Data Services (RDS)
Remote Data Services (RDS) is a proprietary Microsoft mechanism for
accessing remote data across the Internet or intranet. Microsoft is now
shipping the Microsoft Simple Object Access Protocol (SOAP) Toolkit 2.0
that enables you to access remote data using an open, XML-based
standard. Given the availability of the SOAP Toolkit 2.0, you should
migrate from RDS to SOAP. The SOAP 2.0 Toolkit 2.0 also includes sample
code for remotely accessing Microsoft ActiveX? Data Objects (ADO)
Recordsets.

Jet and Replication Objects (JRO)
The Microsoft Jet OLE DB Provider and other related components were
removed from MDAC 2.6. Microsoft has deprecated the Microsoft Jet
Engine, and plans no new releases or service packs for this component.
As a result, the Jet and Replication Objects (JRO) is being deprecated
in this release and will not be available in any future MDAC releases.

.....




" MGFoster" < me@privacy.com>在消息中写道

news:ko ************* @ newsread3.news.pas.earthlink。 net ...

"MGFoster" <me@privacy.com> wrote in message
news:ko*************@newsread3.news.pas.earthlink. net...
16,000到17,000个快照文件!我必须问,为什么这么多?

您是否将这些文件发送给客户?每个文件都是他们的报告版本吗?

您是否正在做这样的事情:

获取客户ID
对于每个客户ID 打印客户的年度报告
下一位客户

如果是这样,也许您应该在
For..Next循环中调用DoEvents函数。也许这将允许Access在下一个报告之前恢复内存。
16,000 to 17,000 Snapshot files! I''ve got to ask, why so many?

Are you sending these files to customers? Each file is their version of
the report?

Are you doing something like this:

Get customer IDs
For each customer ID
Print the customer''s annual report
Next customer

If so, maybe you should put a call to the DoEvents function in the
For..Next loop. Maybe that will allow Access to recover memory before
the next report.




基本上是 - 系统正在生成许多发票。每张发票

有三个级别的子记录,完整的账单包括摘要

和每个子记录的分项(取决于打印选择

因此,一个账单可以是一个到一千个以上的单个报告。快照实际上是一个快速访问的存档

客户服务代理的实际打印运行。


我以为我可能找到了一些注册表的解决方案调整,但它没有诀窍
。我会给DoEvents一个镜头,看看是否能改善

的东西......否则它可能是一个重新开发练习用

Crystal Reports或其他东西下一个版本的软件。


感谢您的建议!



Essentially yes - the system is producing a number of invoices. Each invoice
has three levels of subrecords, and the complete bill consists of summaries
and itemisations for each subrecord (depending on the printing selection
made), so one bill could be anywhere from one to upwards of a thousand
individual reports. The snapshots are actually a quickly-accessible archive
of the actual print run for customer services agents.

I thought I might have found the solution with some registry tweaks, but it
didn''t do the trick. I''ll give the DoEvents a shot to see if that improves
things....otherwise it might have to be a redevelopment exercise with
Crystal Reports or something for the next version of the software.

Thanks for the suggestion!


这篇关于“内存不足”错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆