小编Ant*_*yan的帖子

SQL Server 2017;内存故障排除;资源池“内部”中没有足够的系统内存来运行此查询

我们正在运行本地 SQL Server 2017 来支持数据仓库数据库。数据库按计划通过 SSIS 加载,主要是通过使用临时表和 MERGE 函数。最近,我们开始看到错误“资源池‘内部’中没有足够的系统内存来运行此查询。”。在过去的几周里,这种现象变得越来越猖獗。

我们已经尝试过:

  1. 关闭查询存储
  2. 通过 CU27 更新 SQL Server
  3. 跟踪查询(没有好的结果)
  4. 运行尽可能多的报告来查明问题

与错误发生时间相关的最新更改:

  1. 打开查询存储
  2. 添加大量索引

其他信息:

  1. 我们服务器上有32GB内存,分配26GB给sql server
  2. MERGE 的 TARGET 表是 CLUSTERED COLUMNSTORE INDEX
  3. MERGE的SOURCE表是一个HEAP
  4. 随着时间的推移/多次失败,暂存更改记录的 SOURCE 表已增长到超过 200,000 条记录。TARGET 表大约有 1000 万行。

任何帮助,将不胜感激。在过去的几天里,我在互联网上进行了搜索,以寻求任何指导。到目前为止我所看到的只是:

  1. 更新 SQL 版本
  2. 修改您的查询
  3. 给服务器添加内存

合并语句:

 DROP TABLE IF EXISTS #Changes;
DROP TABLE IF EXISTS #TransformedChanges;

CREATE TABLE #Changes
(
    [Change Type] VARCHAR(100)
);
MERGE [dbo].[FactOrderLine] AS TARGET
USING ( SELECT
[FactOrderLine].[OrderLine_Key],
[FactOrderLine].[BookedDate_Date_Key],
[FactOrderLine].[BookedDate_Time_Key],
[FactOrderLine].[Account_Key],
[FactOrderLine].[CCN_Key],
[FactOrderLine].[BillTo_SalesOffice_Key],
[FactOrderLine].[BillTo_Territory_Key],
[FactOrderLine].[ShipTo_SalesOffice_Key], …
Run Code Online (Sandbox Code Playgroud)

memory sql-server-2017

4
推荐指数
1
解决办法
9141
查看次数

标签 统计

memory ×1

sql-server-2017 ×1