我在Windows Server 2012上使用SQL Server 2014-12.0.2269.0(X64),遇到一些内存问题。当我运行一个存储过程进行相当“繁重”的计算时,大约10分钟后出现错误:
资源池“默认”中没有足够的系统内存来运行此查询。
我的SQL Server有多个数据库(例如15个,但并非总是同时使用它们)。我查看了SQL Server日志文件(出现错误后),并且看到了很多这样的行:
2015-12-17 12:00:37.57 spid19s由于资源池“默认”中的内存不足,不允许为数据库“ Database_Name”分配页面。有关更多信息,请参见“ http://go.microsoft.com/fwlink/?LinkId=330673 ”。
日志中会生成一个报告,其中包含每个组件使用的内存(我认为)。如果我正确地解释了报告,我们可以看到消耗了很多内存MEMORYCLERK_SQLBUFFERPOOL
。您可以在这里找到报告:http : //pastebin.com/kgmk9dPH
我还生成了一个带有图形的报告,该图形显示了相同的“结论”:
这可能是另一个有用的报告:
请注意,我还在日志中看到此错误:
2015-12-17 12:04:52.37 spid70由于数据库内存压力而无法分配页面:FAIL_PAGE_ALLOCATION 8
以下是有关服务器内存的一些信息:
服务器上的总内存:16 Gb
分配给SQL Server的内存:12288 Mb
使用中的物理内存(来自
sys.dm_os_process_memory
):9287 Mb
如果有帮助,则该服务器不承载任何SharePoint数据库。