【问题标题】:MS SQL Server, OutOfMemeryExceptionsMS SQL Server,OutOfMemeryExceptions
【发布时间】:2016-04-01 09:25:27
【问题描述】:

我正在为客户开发 Excel 报告工具。该工具正在广泛的数据库中使用。基本上,它从特定表中获取数据,并在 Excel 中为客户编写报告。到目前为止它一直在工作,但在测试时,我遇到了一个超出为检索数据分配的内存的表。

有没有办法解决这个问题?

我不允许在 SQL Server 上更改分配的内存。

如有必要,我将提供任何代码,但我认为这不会对我的问题增加任何内容。

【问题讨论】:

  • 您将不得不分享更多信息 - 您在处理导致内存不足异常的表数据、您的 sql 查询代码、表的大小、行数、预期结果等。跨度>
  • 该错误是由 SQL Server、Excel 还是您用来链接两者的任何工具/代码引发的?

标签: sql-server sql-server-2008 reporting


【解决方案1】:

我在使用 SSMS (SQL Server Management Studio) 时将非常大的数据集返回到网格之前遇到了这个问题。如果它在某个其他进程中运行,例如在从 SQL 代理作业启动的存储过程中运行,则不会发生该错误。因此,您可能只是由于您的测试方法而引入了此错误。

SSMS 的内存限制为 2 GB,因为它是一个 32 位进程。可能是因为它基于 Visual Studio。

两种选择:将结果更改为使用较少内存的文本 (Ctrl+T),或将结果更改为使用驱动器存储而不是将所有结果加载到内存的文件 (Ctrl+Shift+F) .

注意:这些设置也在执行计划选项旁边的工具栏中。

有一篇关于它的 Microsoft 知识库文章。 (https://support.microsoft.com/en-us/kb/2874903)

SSMS 是一个 32 位进程。因此,它被限制为 2 GB 的内存。 SSMS 人为地限制了文本的数量 在结果窗口中按数据库字段显示。此限制为 64 “网格”模式下的 KB 和“文本”模式下的 8 KB。如果结果集太 大,显示查询结果所需的内存可能 超过 SSMS 进程的 2 GB 限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多