【问题标题】:System.OutOfMemoryException occurs frequently after Upgrading SQL Server 2016 to version 13.0.15700.28将 SQL Server 2016 升级到版本 13.0.15700.28 后频繁发生 System.OutOfMemoryException
【发布时间】:2016-12-26 20:21:27
【问题描述】:

我在具有多个显示器、16 gigs DDR4 RAM、4 Ghz I7、GTX 970 的开发盒上运行 Windows 10 Pro 64 位。我使用 SQL Server 2016 开发人员版以及 VS 2015 Enterprise Update 3 运行 SQL Management Studio .

昨天我将 Sql Management Studio 2016 升级到 13.0.15700.28,它对我的​​机器来说就像一颗毒丸。现在一两个小时后,它会抛出内存不足,除了:

执行批处理时出错。错误信息是:异常 'System.OutOfMemoryException' 类型被抛出

现在,如果您正在处理超过几百万行的非常大的返回集,这有时是典型的。不是,如果你正在做

Select Top 10 * from SmallObject

我正在为现有开发系统的新对象创建一些新表和过程。而这只是突然发生,没有押韵或原因。它似乎也是 SSMS 的部分阻塞错误,因为它现在冻结系统并尝试打开一个连接对话框窗口,就像我第一次启动 SSMS 并尝试连接到数据源一样。到目前为止,它一直在爬行,直到我从任务管理器中杀死它。我也在运行 Redgate 的 SQL Prompt 7.2.0.241。我尝试过的事情:

  1. 尝试一次将标签页控制在五个以下,并在完成后关闭它们。
  2. 不要将标签从一个屏幕切换到另一个屏幕。
  3. 关掉Redgate,看看是不是罪魁祸首
  4. 检查内存使用情况

我知道它昨晚在我上班时爆炸了,SSMS 让我知道它已经崩溃了。这可能是一个 MS 错误,但 Redgate 或我拥有的其他一些配置中可能存在一个错误,所以我认为最好问问 SO,看看其他人看到了什么。 SSMS 的这个版本是 2016 年 8 月 15 日,所以它是非常新的。

来自应用程序事件日志的堆栈跟踪的两个错误:事件 1026

应用程序:ssms.exe 框架版本:v4.0.30319 描述: 由于未处理的异常,进程被终止。异常信息:

System.ComponentModel.Win32Exception 在 System.Windows.Forms.NativeWindow.CreateHandle(System.Windows.Forms.CreateParams) 在 System.Windows.Forms.Control.CreateHandle() 在 System.Windows.Forms.ComboBox.CreateHandle() 在 System.Windows.Forms.Control.CreateControl(Boolean) 在 System.Windows.Forms.Control.CreateControl(Boolean) 在 System.Windows.Forms.Control.CreateControl(Boolean) 在 System.Windows.Forms.Control.CreateControl(Boolean) 在 System.Windows.Forms.Control.CreateControl(Boolean) 在 System.Windows.Forms.Control.CreateControl() 在 System.Windows.Forms.Control.WmShowWindow(System.Windows.Forms.Message ByRef)在 System.Windows.Forms.Control.WndProc(System.Windows.Forms.Message ByRef)在 System.Windows.Forms.ScrollableControl.WndProc(System.Windows.Forms.Message ByRef)在 System.Windows.Forms.Form.WmShowWindow(System.Windows.Forms.Message ByRef)在 System.Windows.Forms.Form.WndProc(System.Windows.Forms.Message ByRef) 在 System.Windows.Forms.Control+ControlNativeWindow.OnMessage(System.Windows.Forms.Message ByRef)在 System.Windows.Forms.Control+ControlNativeWindow.WndProc(System.Windows.Forms.Message ByRef) 在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)

另一个是事件日志 1002 错误“应用程序挂起”,我看不到真正有意义的帮助:

短信服务 2015.130.15700.28 68ac 01d1f98d17a32d16 4294967295 C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Ssms.exe 62a64950-658b-11e6-a2c8-f832e4a07fda

54006F00700020006C006500760065006C002000770069006E0064006F0077002000690073002000690064006C00650000000000

2016 年 8 月 23 日更新:

时不时还会出现这个错误:

程序 Ssms.exe 版本 2015.130.15700.28 停止交互 与 Windows 并被关闭。看看是否有更多关于 问题可用,请检查安全性中的问题历史记录和 维护控制面板。进程 ID:35f8 开始时间: 01d1fca7e48da2da 终止时间:4294967295 应用路径: C:\Program 文件 (x86)\Microsoft SQL 服务器\130\Tools\Binn\ManagementStudio\Ssms.exe 报告 ID: 4e8b6ab9-693f-11e6-a2cb-f832e4a07fda 故障包全名:
错误的包相关应用程序 ID:

显然,这对我以外的人来说是一个问题,因为我在这里获得了投票: https://connect.microsoft.com/SQLServer/feedback/details/3062914/system-outofmemoryexception-thrown-by-even-small-selects-randomly-now

如果您遇到这种情况或知道可能的解决方法,请告诉我。在这一点上,如果我必须做繁重的 SQL 工作,我正在考虑降级。同样,我在 Windows 10 64 位机器上,这仅在升级到最新的 SSMS 版本后发生。

2016 年 8 月 24 日更新

MS 现在似乎承认了这个错误。如果您遇到这种情况,请转到此链接并投票: https://connect.microsoft.com/SQLServer/feedback/details/3074856

2016 年 8 月 31 日更新

MS 关于异常的最新消息:

Microsoft 于 2016 年 8 月 29 日上午 10:21 发布的结果是有一个 实用程序类中的线程泄漏。泄漏的线程数将是 与您拥有的注册服务器数量成正比 事物。下一个版本中将进行修复

我降级是因为工作比弄清楚发生了什么更重要。降级对我来说现在工作正常。我提供了 MS SQL 转储,因此希望他们能在未来几周内获得新版本。如果您好奇,我使用的是 13.0.15600.2 版本,并且到目前为止我两天前降级了。

【问题讨论】:

  • 其余的异常在哪里?你在哪里找到这个例外?文本包括调用堆栈,它将向您显示实际引发该错误的人。请放心,这不是由于 SSMS,因为其他人具有相同的版本。您是否在事件查看器中检查了奇怪的错误消息?
  • 我运行这个 SSMS 版本,VS 2015 Update 3 VS 15 Preview SQL Server 2014 2016,适用于 ETL/报告工作负载,但没有内存问题。如果您怀疑是插件问题,只需禁用所有 SSMS 插件并检查是否可以解决问题
  • 最后,OutOfMemoryException 并不意味着你的内存用完了。当内存如此碎片化以至于 .NET 找不到连续的足够大(例如,可以增长一个大列表)时,它也会被抛出
  • 仍然是一个问题,关闭 SQL 提示上的建议不起作用。也尝试了 SQL Prompt 的 Beta 版本。更新答案
  • 2015.130.15700.28 真是倒退了一步。与 OP 一样,在几个小时的非密集工作后会引发异常。我强烈建议这次反对升级。

标签: sql-server ssms sql-server-2016 ssms-2016


【解决方案1】:

我遇到了同样的问题。我只是关闭并重新打开 SQL Server。能够克服错误。

An error occurred while executing batch. Error message is: 
Exception of type 'System.OutOfMemoryException' was thrown.

【讨论】:

    【解决方案2】:

    好像他们用最新版本解决了这个问题:SSMS 16.4.1

    5. 修复了内存不足异常被抛出的问题。(Microsoft Connect item #3062914)(Microsoft Connect item #3074856)

    【讨论】:

    • 让我给它一天左右,然后我会给你答案,因为我今天早上自己看到并下载了它。
    • 自从更新后我得到它的频率降低了,但是,我仍然需要每隔几天循环一次,因为我“内存不足”。
    • v17.1 很少向我显示 System.OutOfMemoryException。但是还是经常被锁。 7 次中有 1 次会显示内存不足异常。对我来说,每天大约上锁 4 次。 Bit-9 / 炭黑杀毒软件?如果没有此防病毒软件的其他人发生这种情况,有兴趣。
    • v17.2 并且经常发生。
    • @TamusJRoyce 我们也有 Bit-9。您的 SSMS 是否需要永远启动?在我们公司,我们需要 5 分钟才能开始。这使得不得不经常关闭它更加令人沮丧。
    【解决方案3】:

    这是由于缓存内存或未使用的临时文件造成的。

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

    【讨论】:

    • 投了赞成票,我不知道为什么这个答案被否决了,因为这是可行的解决方案之一。尤其是当您使用 Red Gate 等第三方工具时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多