2016-04-01 69 views
2

我正在为客户提供Excel报告工具。该工具正在广泛的数据库中使用。基本上它需要来自特定表格的数据,并在Excel中为客户编写报告。到目前为止,它一直在工作,但在测试时,我碰到了一个超过分配内存以检索数据的表。MS SQL Server,OutOfMemeryExceptions

有什么办法可以解决这个问题吗?

我不允许在SQL Server上更改已分配的momory。

我会提供任何代码,如果有必要,但我不认为这会增加任何东西给我的问题。

+0

你将不得不分享更多信息 - 你如何处理导致内存不足异常的表数据,你的SQL查询代码,表的大小,行计数,预期的结果等。 – AKS

+0

是否出现错误通过SQL Server,Excel或任何工具/代码来连接两者? –

回答

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限制。