首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理工作室System.OutOfMemoryException

管理工作室System.OutOfMemoryException
EN

Database Administration用户
提问于 2014-08-29 14:18:54
回答 6查看 164.5K关注 0票数 40

我正在使用Microsoft 2012,并试图在Management中对其运行一个简单的查询。我得到了以下错误(在SSMS中,运行在服务器上):

执行批处理时发生错误。错误消息是:引发了“System.OutOfMemoryException”类型的异常。

该系统安装了24 is内存,但在任务管理器中,sqlservr.exe进程仅使用2.9GB。

是否有限制其RAM使用的设置?

EN

回答 6

Database Administration用户

回答已采纳

发布于 2014-08-29 14:48:05

此错误表示Management内存不足,而不是Server服务。即使安装了64位Server,可执行文件也是32位应用程序。

这很可能是由于返回到Management的结果集的大小造成的。您是否正在执行类似really_big_table的SELECT *?有关更多信息,请参见http://support.microsoft.com/kb/2874903

票数 41
EN

Database Administration用户

发布于 2014-08-29 15:58:21

Mike是对的,您正在接收的错误消息来自Management应用程序本身,而不是来自Server。本地工作站上的内存已经耗尽,这可能是因为试图将160亿行数据拖到客户端应用程序中(在网格中显示大量数据在内存方面是相当昂贵的,因此尝试使用TOP等限制查询。我不知道您可以使用足够的数据来使用所有本地内存(S)做什么实际的事情)。

但我确实想解决另一个问题:使用任务管理器来评估Server使用的内存量。别这么做,这是个胆大妄为的骗子。复制从这个答案 (您的问题是双重的,所以我不能真正关闭它作为一个副本):

您永远不会信任任务管理器告诉您SQL Server使用了多少内存。停止使用任务管理器,句号。使用性能计数器-还可以使用DMVs查询性能计数器:

代码语言:javascript
复制
SELECT object_name, cntr_value 
  FROM sys.dm_os_performance_counters
  WHERE counter_name = 'Total Server Memory (KB)';

您可以将其保存为工具>选项>环境>键盘>查询快捷方式中的查询快捷方式,并在查询窗口中获得准确的结果比从任务管理器获得不准确的结果快得多。

您还可以使用以下查询检查内存压力(以及是否可以对其进行任何处理):

代码语言:javascript
复制
SELECT object_name, cntr_value
  FROM sys.dm_os_performance_counters
  WHERE counter_name IN ('Total Server Memory (KB)', 'Target Server Memory (KB)');

-- SQL Server 2012:
SELECT physical_memory_kb FROM sys.dm_os_sys_info;

-- Prior versions:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

EXEC sp_configure 'max server memory';
票数 19
EN

Database Administration用户

发布于 2015-03-26 05:55:30

我的案子也是一样。我的开放了几天。我重新启动它就解决了。

票数 15
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/75326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档