【问题标题】:SSMS System out of memorySSMS 系统内存不足
【发布时间】:2017-06-28 18:53:12
【问题描述】:

在 SSMS 中运行大型程序时,我会不时在屏幕上收到以下消息:An error occurred while executing batch. Error message is: Exception of type 'System.OutOfMemoryException' was thrown.

问题是,一旦抛出此错误,除了重新启动机器之外似乎没有任何喘息的机会。我知道这是我机器上的内存问题,这根本不会影响服务器;但是,对于开发人员来说,在中午重新启动从来都不是一件令人愉快的事情。

任何帮助将不胜感激!

【问题讨论】:

  • 为什么必须重新启动?如果您运行的是 32 位版本的 SSMS,它可能只使用了 4GB 的 RAM。根本没有理由重新启动。只需重新运行查询或使其返回较小的数据集或其他东西
  • 我使用的是 64 位。一旦我收到该消息,它似乎就完成了。即使我尝试在另一个窗口(使用另一个连接)中运行SELECT 1 + 1,它仍然会失败并出现同样的错误
  • 当这种情况发生时你能发布你正在执行的查询吗?只发生一个查询或多个查询是否一致?是不是 1 个表导致了这种情况?你限制你的批次吗?您是否优化了查询?
  • 关闭 SSMS 应该会终止事务并释放内存。
  • 升级到 2017 或降级到 2014。SSMS 2016 存在内存未释放的错误,因此在某个时间点之后,即使是最轻的查询也可能导致 OOM。 sqlservercentral.com/blogs/confessions-of-a-microsoft-addict/…

标签: sql-server ssms ssms-2016


【解决方案1】:

既然我想出了最初的“评论”答案......就是这样。

关闭 SSMS 应该会终止事务并释放内存。

很高兴这对你有用。

【讨论】:

  • 除了关闭SSMS还有其他方法吗?
  • 我设法通过关闭一些选项卡来解决问题,但我有让它们打开的坏习惯。
【解决方案2】:

我今天在尝试为一个麻烦的查询获取执行计划时遇到了这个问题,然后 SSMS 对我完全没有响应。

能够通过打开 sqlcmd 来解决此问题,使用 sp_who2 找到问题查询然后将其杀死。

此时,我可以访问我在 SSMS 中打开的其他选项卡,并将尚未保存的一对复制到记事本中。当然,当我尝试做任何其他事情时,Windows 说 SSMS 没有响应,并让我可以选择强制关闭它或进行调试。

【讨论】:

    【解决方案3】:

    这对我有用:

    • 正在删除 %temp% 位置上的临时文件。如果问题仍然存在,请重新启动 SSMS。

    这是由于未使用临时文件造成的。

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 2020-11-07
      相关资源
      最近更新 更多