热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

SQLServer出现System.OutOfMemoryException异常的解决方法

这篇文章主要介绍了SQLServer出现System.OutOfMemoryException异常的解决方法,同时提供了微软官方的解决方案,需要的朋友可以参考下

今天在用SQL Server 2008执行一个SQL脚本文件时,老是出现引发类型为“System.OutOfMemoryException”的异常错误,脚本明明是从SQL Server 2008导出的,应该不会出错,研究了好久问题才得以解决。

出现这个错误的主要原因是由于SQL脚本文件太大,估计超过了100M了,解决方法就是把脚本文件分成几个脚本文件,分别去执行即可。


来自微软官方的解决方案:

原因:

因为计算机没有足够的内存来完成请求的操作,则会出现此问题。

在 SQL Server 2000 Reporting Services 的限制会导致内存绑定的处理报告的某些部分。例如,查询结果处理和对象模型呈现受限于内存。

计算机没有足够的内存来完成请求的操作在一个或多个下列条件都为真:

1.一个报告是太大或太复杂。
2.其他正在运行的进程的费用是非常高的。
3.计算机的物理内存是太小。

处理报表,则分两个阶段。两个阶段是执行和呈现。在执行阶段期间或在呈现阶段,会出现此问题。

如果在执行阶段中,会出现此问题,此问题很可能是因为太多的内存消耗在查询结果中返回的数据。此外,下列因素会影响内存消耗,在执行阶段:

1.分组
2.筛选
3.聚合
4.排序
5.自定义代码

如果在呈现阶段中会发生此问题,原因被与该报表显示何种信息以及报表显示信息的方式。

1.数量和类型的控件
2.这些控件之间的关系
3.格式设置
4.显示的数据量

解决方案:

若要解决此问题,请使用下列方法之一。

方法 1

向计算机中添加足够的物理内存。

注意如果您超过 2 千兆字节 (GB) 的内存可以启用该 / 3gb 切换在 Boot.ini 文件中为更好的性能。 有关如何在 SQL Server 中使用了 / 3gb 开关的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
274750如何配置 SQL Server 使用 2 GB 以上物理内存

方法 2

将报告计划安排为在内存限制时较低的非高峰时段运行。

方法 3

调整所在进行相应设置。

注意:呈现时通过报告服务 Web 服务的报告,该报告服务 Web 服务从 Machine.config 文件中获得所在。但是,计划的报告呈现由报表服务器的 Windows 服务。报表服务器的 Windows 服务获取从 RSReportServer.config 文件的所在。

有关所在的详细信息,请参阅"更多信息"一节。

方法 4

升级到 64 位版本的 Microsoft SQL Server 2005年报告服务。

方法 5

重新设计该报表。若要执行此操作,请使用下列方法之一。

方法 A

重新设计报表查询。通过重新设计报表查询,通过以下方法,可以减少内存消耗:
1.报告查询中返回更少的数据。
2.在报告查询的 WHERE 子句中使用的一个更好的限制。
3.移动到数据源的复杂的聚合。

方法 B

将报表导出为其他格式。通过使用不同的格式来显示报表,您可以减少内存占用。下表列出了几个按顺序从大多数内存消耗到最低的内存消耗的导出格式。

代码如下:
格式    说明
Microsoft Excel  呈现在 Excel 中的报表
(TIFF) 图像   将报表呈现为静态图像的面向页的格式
PDF     呈现报表采用可移植文档格式 (PDF)
HTML    呈现到浏览器在 HTML 报表
CSV     呈现报表以逗号分隔的格式 ;在与 CSV 文件格式关联的查看工具中打开报表
XML     呈现报表的 XML ;在浏览器中打开报表

注意:如果没有应用 XSLT 转换,这种格式将消耗比 CSV 格式所消耗的内存更少。

方法 C

简化报表设计。可以通过以下方式简化报表设计减少内存消耗:
1.在报告中包含更少的数据区域或控件。
2.钻取报表用于显示详细信息。
此外,如果报告的目的是只是数据的集合,可用于其他 Microsoft 产品更好的性能。例如,您可以使用数据转换服务 (DTS) 或 Microsoft SQL Server 2005年集成服务。

示例

下面的示例演示了如何解决此问题。请考虑下面的示例:

1.以 PDF 格式,并以 Excel 格式,无法呈现在报表管理器返回 160 页的报告。当使用 8.5 × 11 英寸页面尺寸时,报表可能远远超过 250 页。
2.报表的数据源返回报表服务器 500 兆字节 (MB) 的数据。通常情况下,SQL Server 2000年报表服务要求数据集所使用的内存量的两到三倍。因此,SQL Server 2000年报告服务需要几乎 1.5 GB 的内存来呈现该报表。

若要解决此问题,在此示例中,重新设计报表,以显示该报表仅为有限的一组筛选器值的汇总数据。此外,请确保聚合发生在报告数据中提取数据库查询和聚合中的报告本身不是。这些方法有助于大大减少到报表服务器返回的数据量。因此,成功地并更快地呈现报表。


推荐阅读
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 本文详细介绍了在腾讯云服务器上配置 phpMyAdmin 的方法,包括安装、配置和解决常见问题。通过这些步骤,您可以轻松地在腾讯云环境中部署并使用 phpMyAdmin。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • HTML5 表单新增属性详解
    本文深入探讨了HTML5中表单的新增属性,帮助读者全面掌握这些新特性。内容涵盖autocomplete、autofocus、list等常用属性,并详细解释了form、novalidate、enctype和accept-charset等高级属性的功能与应用场景。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
author-avatar
Maugham
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有