System.OutOfMemoryException 将 SQL Server 2016 升级到版本 13.0.15700.28 后频繁出现

System.OutOfMemoryException occurs frequently after Upgrading SQL Server 2016 to version 13.0.15700.28

我正在 运行ning Windows 10 Pro 64 位开发箱,有多个显示器,16 GB DDR4 RAM,4 Ghz I7,GTX 970。我 运行 SQL Management Studio with SQL Server 2016 Developer Edition 以及 VS 2015 Enterprise Update 3。

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

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

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

Select Top 10 * from SmallObject

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

  1. 尝试一次将标签页保持在五个以下并在完成后将其关闭。
  2. 不要断开从一个屏幕到另一个屏幕的选项卡。
  3. 关闭 Redgate,看看它是否是罪魁祸首
  4. 随时检查内存使用情况

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

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

Application: ssms.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info:

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

另一个是事件日志 1002 错误 'Application Hang',我看不到任何真正有意义的帮助:

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

54006F00700020006C006500760065006C002000770069006E0064006F0077002000690073002000690064006C00650000000000

2016 年 8 月 23 日更新:

仍然不时出现此错误:

The program Ssms.exe version 2015.130.15700.28 stopped interacting with Windows and was closed. To see if more information about the problem is available, check the problem history in the Security and Maintenance control panel. Process ID: 35f8 Start Time: 01d1fca7e48da2da Termination Time: 4294967295 Application Path: C:\Program Files (x86)\Microsoft SQL Server0\Tools\Binn\ManagementStudio\Ssms.exe Report Id: 4e8b6ab9-693f-11e6-a2cb-f832e4a07fda Faulting package full name:
Faulting package-relative application 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 现在似乎承认了这个错误。如果您遇到这种情况,请转到此 link 并投票: https://connect.microsoft.com/SQLServer/feedback/details/3074856

2016 年 8 月 31 日更新

来自 MS 的最新异常:

Posted by Microsoft on 8/29/2016 at 10:21 AM turns out there's a thread leak in a utility class. The number of threads leaked will be proportional to the number of registered servers you have, among other things. A fix is coming in the next release

我降级了,因为做工作比弄清楚发生了什么更重要。降级对我来说现在工作正常。我给了 MS SQL 转储,希望他们能在接下来的几周内获得新版本。如果您好奇的话,我两天前降级时使用的版本是 13.0.15600.2 和 stable。

似乎他们在最新版本中解决了这个问题:SSMS 16.4.1

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

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

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

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

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