Select the product you need help with
当您使用 SQL Server 报告服务时,您可能会收到"System.OutOfMemoryException"错误消息文章编号: 909678 - 查看本文应用于的产品 本页症状当您使用的是 Microsoft SQL Server 2000 报表服务,或用 Microsoft SQL Server 2005 报告服务时,您可能会收到以下错误消息: 在该报表服务器上出现内部错误。 请参阅错误日志以了解更多的详细信息。(rsInternalError)获取联机帮助 类型的 System.OutOfMemoryException 引发异常。 System.OutOfMemoryException: 类型的 System.OutOfMemoryException 引发异常。 事件 1
原因出现此问题的原因是该计算机没有足够的内存来完成所请求的操作。 SQL Server 2000 报表服务的限制会导致报告处理绑定的内存的某些部分。例如对于查询结果处理和对象模型呈现是绑定的内存。 计算机没有足够的内存来完成所请求的操作,一种或多种以下条件:
如果在执行阶段,则会出现此问题,出现此问题最可能的原因太多的内存占用的查询结果中返回的数据。此外,下列因素会影响执行阶段的内存消耗:
http://msdn2.microsoft.com/en-us/library/aa179471(SQL.80).aspx
(http://msdn2.microsoft.com/en-us/library/aa179471(SQL.80).aspx)
解决方案若要解决此问题,使用下列方法之一。 方法 1将添加到该计算机上有足够的物理内存。注意如果您超过 2 千兆字节 (GB) 的内存可以启用该 / 3gb 切换在 Boot.ini 文件中为更好的性能。 有关如何在 SQL Server 中使用了 / 3gb 开关的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 274750
(http://support.microsoft.com/kb/274750/
)
如何配置要使用的物理内存的 more than 2 GB SQL Server 方法 2计划在 off-hours 内存限制时较低时运行的报表。方法 3调整 MemoryLimit 相应地设置。注意当您呈现通过报告服务 Web 报表服务,报告服务 Web 服务获取 MemoryLimit 设置 Machine.config 文件中。但是,计划的报表呈现报表服务器的 Windows 服务。报表服务器 Windows 服务从 RSReportServer.config 文件获取 MemoryLimit 设置。 有关 MemoryLimit 设置的详细信息,请参阅"更多信息"部分。 方法 4升级到 64 位版本的 Microsoft SQL Server 2005 报告服务。方法 5重新设计报表。若要执行此操作使用下列方法之一。方法 A重新设计报告查询。可以通过以下方式重新设计报表查询减少内存占用:
方法 B将报表导出到另一种格式。您可以减少内存占用量来显示报表使用不同的格式。下表列出了几种导出格式到最少的内存消耗大多数的内存消耗的顺序。收起该表格
方法 C简化报表设计。您可以通过以下方式简化报表设计减少内存占用:
示例下面的示例演示如何解决此问题。 请考虑下面的示例:
更多信息您在使用 SQL Server 2000 报表服务时,您可能会遇到与内存相关的问题,由下面的错误条件之一引起的:
System.OutOfMemoryException 错误是一个操作从系统请求更多的内存和系统不能提供内存时由 SQL Server 2000 报表服务引发的错误。时将发生此错误以不安全的方式将 SQL Server 2000 报表服务关闭进程。关闭是不安全的因为 SQL Server 2000 报表服务共享之间运行请求的资源。因此,SQL Server 2000 报表服务不能保证数据是为所有请求仍然安全。 内存限制是一组的设置,以帮助保护免受可能导致不稳定的条件的系统。 例如对于的内存限制有助于防止一个报表服务器处理从使用太多内存。通过 MemoryLimit 设置和通过 MaximumMemoryLimit 设置 RSReportServer.config 文件中定义的指定内存限制。达到内存限制是内存不足,无法实际运行 SQL Server 2000 报表服务之前,由 Microsoft.net 框架将引发错误。 您可以呈现报表从一个 Web 站点或计划的任务。因此,SQL Server 2000 报表服务中的两种不同环境中可能会发生错误条件。在环境如下所示:
报告服务 Web 服务和 System.OutOfMemoryException 错误异常消息和 $ 关机消息与以下消息类似的记录中 SQL Server 2000 Reporting Services 日志文件 (ReportServerService_ <timestamp>.log):w3wp! 库! 1b3c! 07/11/2005年-10:38:00:: e 错误: 找到 System.OutOfMemoryException 异常: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: 类型 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 引发的异常。---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: 类型 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 引发的异常。---> System.OutOfMemoryException: 类型 System.OutOfMemoryException 引发的异常。 w3wp! 库! 1b3c! 07/11/2005年-10:38:00:: e 错误: 终止工作进程 \Microsoft SQL Server\ <Instance of SQL Server> \Reporting Services\LogFiles 此外,在应用程序日志中记录类似于下面的事件的事件:
若要解决此问题,您可以向系统添加更多的物理内存或减少其他进程的内存消耗。 理想情况下,您可以调整 MemoryLimit 设置或 $ Microsoft Internet Information Services (IIS) 6.0 的 应用程序池 设置,以便捕获到错误之前出现内存不足情况。因此,进程被涉及多个正常。您必须尝试在的设置,不能保证您将始终达到内存限制第一次。 报告服务 Web 服务和内存限制在 Windows 事件日志和 SQL Server 2000 Reporting Services 日志文件中记录了消息。Reporting Services Web 服务日志文件表示进程正在关闭。但是,SQL Server 2000 报表服务不控制关机,并且不能记录关机有关的错误信息。您可能会注意到在应用程序日志中记录是以下事件之一: 事件 1
您可以更改该 <processmodel>下的该内存限制 Machine.config 文件中的部分。 注意如果您在纯模式下在 Machine.config 文件未使用运行 IIS 6.0。内存限制被受中 IIS 6.0 应用程序池的属性。 有关在 ASP.NET 和 IIS 6.0 中的内存配置的详细信息,请访问以下 MSDN 网站:
报表服务器的 Windows 服务和 System.OutOfMemoryException 错误报告未发送到一个文件共享或发送给已订阅的收件人。当计划呈现过程会自动重新启动时,过程将尝试恢复过程的一部分再次运行相同的订阅。在 $ SQL Server 2000 Reporting Services 日志文件中记录与以下错误消息类似的错误消息:ReportingServicesService! 库! 618! 7/9/2003年-16: 06: 01:: 状态: 错误: 类型 System.OutOfMemoryException 引发的异常。 ReportingServicesService! 通知! 618! 7/9/2003年-16: 06: 01:: 传递提供程序引发的错误: System.OutOfMemoryException: 类型 System.OutOfMemoryException 引发的异常。 ReportingServicesService! 通知! 618! 7/9/2003年-16: 06: 01:: 通知 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 完成。成功: False、 状态: 错误: 类型 System.OutOfMemoryException 引发的异常,DeliveryExtension: 报表服务器电子邮件、 报表: 发票,尝试 0 ReportingServicesService! dbpolling! 618! 7/9/2003年-16: 06: 01:: NotificationPolling 完成处理项目 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 ReportingServicesService! servicecontroller! 568! 7/9/2003年-16: 09: 30:: i: 所请求的内存限制应用程序域回收 ReportingServicesService! servicecontroller! 568! 7/9/2003年-16: 09: 30:: i: 回收从默认域服务 ReportingServicesService! dbpolling! 568! 7/9/2003年-16: 9: 30:: EventPolling 轮询服务已停止 ReportingServicesService! dbpolling! 87 c! 7/9/2003年-16: 09: 30:: EventPolling 检测信号线程退出的停止。 ReportingServicesService! dbpolling! 568! 7/9/2003年-16: 9: 30:: NotificationPolling 轮询服务已停止 ReportingServicesService! dbpolling! 880! 7/9/2003年-16: 09: 30:: NotificationPolling 检测信号线程退出停止的。 ReportingServicesService! dbpolling! 568! 7/9/2003年-16: 9: 30:: SchedulePolling 轮询服务已停止 您不能配置任何设置,以避免此问题。通过在计算机上的内存量和其他进程的内存消耗量,此问题会受到影响。 若要解决此问题,您可以向计算机添加更多的物理内存或减少其他进程的内存消耗。 报表服务器的 Windows 服务和内存限制报告未发送到一个文件共享或发送给已订阅的收件人。订阅的 状态 属性具有"线程中止"值。错误 SQL Server 2000 Reporting Services 日志文件中记录与以下错误消息类似的消息:ReportingServicesService! reportrendering! 17a8! 09/28/2005年-16: 10: 12:: e 错误: 引发 Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: 类型 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 引发的异常,; 信息: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: 类型 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 引发的异常。---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: 类型 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 引发的异常。---> System.Threading.ThreadAbortException: 线程已被中止。 ReportingServicesService! runningjobs! 17a8! 09/28/2005年-16: 10: 12:: i: CancelableJobExecution.Execute 捕获到某些其他线程中止异常 ReportingServicesService! 库! 17a8! 09/28/2005年-16: 10: 12:: i: 初始化 EnableExecutionLogging 为 True 为在服务器系统属性中指定。 ReportingServicesService! runningjobs! 1810年! 09/28/2005年-16: 10: 12:: i: CancelableJobExecution.Execute 捕获到某些其他线程中止异常 ReportingServicesService! 库! 1810年! 09/28/2005年-16: 10: 12:: i: 初始化 EnableExecutionLogging 为 True 为在服务器系统属性中指定。 ReportingServicesService! dbpolling! 1810年! 09/28/2005年-16: 10: 12:: 无法再处理项目 6e786bb5 3e4d 462a 92 fc-2942e6aec007 NotificationPolling 将被重新排队 ReportingServicesService! dbpolling! 1810年! 09/28/2005年-16: 10: 12:: 队列工作线程,发现未处理的异常: System.Threading.ThreadAbortException: 线程已被中止。 在 Microsoft.ReportingServices.Library.NotificationQueueWorker.HandleNotification(QueueItem item) 在 Microsoft.ReportingServices.Library.NotificationQueueWorker.QueueWorker(QueueItem item) 在 Microsoft.ReportingServices.Library.QueuePollWorker.WorkItemStart (对象状态) 报表服务器的 Windows 服务会尝试完成现有的请求。此外,报表服务器的 Windows 服务监视其自己的配置设置,以确保所请求的操作不会超过内存限制。如果所请求的操作不会超过内存限制,报表服务器的 Windows 服务停止的进程。报表服务器 Windows 服务都自动将失败的作业启动任务列表中。报表服务器的 Windows 服务重新启动,报表服务器的 Windows 服务会尝试再次运行该作业。 RSReportServer.config 文件中的两个设置会影响内存配置。特定的项是 MaximumMemoryLimit 设置和 $ 在此 <service>MemoryLimit 设置 标记。 这些值表示物理内存的百分比。如果现有请求在内存消耗达到由 MemoryLimit 设置指定的百分比,报表服务器的 Windows 服务将停止采取额外的请求。但是,继续当前正在进行的请求。 释放内存后由 MemoryLimit 设置指定的百分比小于再次接受新请求。 如果现有请求在内存消耗达到由 MaximumMemoryLimit 设置指定的百分比,报表服务器应用程序域将被终止。 这些设置模仿内存限制,在该 <processmodel>下 Machine.config 文件中节和有效的工作方式相同。这些设置同样适用报告服务 Web 服务和报告服务器 Windows 服务之间的一致性。 参考属性文章编号: 909678 - 最后修改: 2009年11月24日 - 修订: 3.0 这篇文章中的信息适用于:
机器翻译 注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。 点击这里察看该文章的英文版: 909678
(http://support.microsoft.com/kb/909678/en-us/
)
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。 |




回到顶端








