AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 232833
Accepted
grouchball
grouchball
Asked: 2019-03-23 03:07:55 +0800 CST2019-03-23 03:07:55 +0800 CST 2019-03-23 03:07:55 +0800 CST

SSAS 模型刷新 - 没有足够的内存来完成此操作错误

  • 772

我们已经开始遇到有关刷新表格 SSAS 模型的问题。

表格 SSAS 模型中有 38 个表。

这个过程已经运行了一年多没有问题,但是现在大约一个月,我们还没有能够成功地处理模型中的表。

如果我访问 SSAS 数据库 > 右键单击​​ > 进程数据库 > 选择模式以处理默认然后确定,这就是问题发生的时候。

它会在那里停留大约 5 分钟,然后出现错误消息:

无法将修改保存到服务器。返回错误:'没有足够的内存来完成此操作。请稍后再试,当可能有更多可用内存时。

在此处输入图像描述

在此处输入图像描述

如果我尝试单独“处理”表格,我也会收到相同的错误消息。

我在高级窗口中查看了 SSAS 的内存设置,并将这些值重置为默认值。因此,关键值(据我所知)目前是:

在此处输入图像描述

服务器已经重启了几次,我们仍然遇到同样的问题。

环境细节:

Windows Server 2016 数据中心

SQL Server 2017 (RTM-CU9-GDR) (KB4293805) - 14.0.3035.2 (X64)

SSAS 版本:14.0.223.1

服务器模式:表格

服务器内存:64Gb

SQL Server 分配的内存:28Gb

我已经在网上准备了多篇关于这类问题的文章,但到目前为止似乎没有任何相关/有用的文章。

任何指导/帮助将不胜感激。

免责声明:我不是 BI / SSAS 人。我只是一个 DBA 已经被赋予了这个问题,所以如果我不能完全正确地解释这个问题,请原谅我。

ssas tabular-model
  • 2 2 个回答
  • 11938 Views

2 个回答

  • Voted
  1. Best Answer
    John Eisbrener
    2019-03-23T07:41:27+08:002019-03-23T07:41:27+08:00

    TL/DR:添加更多内存,减小模型的大小,和/或将 SQL Server 服务或 SQL Server 分析服务移动到不同的服务器(例如向外扩展)

    更长的解释: 几个月前,我们用我们的表格 SSAS 生产服务器进行了这个练习,实际上,由于我们的基础架构团队对 RAM 很吝啬(我可以理解,因为它并不便宜) ,因此实际上向 Microsoft 寻求“正式”建议. 为了清楚起见,我们遇到的错误如下:

    由于没有足够的内存可供应用程序使用,该操作已被取消。如果使用 32 位版本的产品,请考虑升级到 64 位版本或增加机器上的可用内存量。

    我们的服务器最初设置为 64GB 内存,并托管 2 个 SSAS 模型,总大小为 40GB。此计算机上没有托管其他 SQL Server 服务。有时我们的模型可以毫无问题地处理,但大多数时候它们会失败。我们将重新启动服务器,然后也许他们会成功……如果风恰到好处并且星星和行星都对齐。

    与多维 (MOLAP/ROLAP/HOLAP) 模型不同,默认的表格模型在利用内存中技术时完全加载到内存中。如果模型无法完全加载到内存中,您就会遇到问题。

    可悲的是,微软的文档分解了“内存建议”是什么,因为我找不到任何正式文档提供除了运行服务所需的“最低”级别之外的任何内容。从我们提交的支持票中,微软的建议如下:

    对于大小 X 的模型,在 SSAS 服务器上提供 2X - 10X RAM 以供 SSAS 服务使用,这进一步受以下因素影响:

    • 多维数据集处理需要 2X - 3X RAM 来进行完整处理,其中包括内置内存中模型的影子副本。
    • 连接到多维数据集的用户/报告的数量也会增加 RAM 需求,有时会增加 10 倍,具体取决于报告的数量、数量等,因为用户/报告可以生成执行计算或内存实现的 DAX 查询(这会导致引擎构建一个中间非压缩结果,并可能导致内存消耗高于预期)。
    • 正在处理的模型数量也会增加所需的内存占用。
    • 如果该设置被禁用,则启用 VertiPaqPagingPolicy,因此 SSAS 可以利用操作系统页面文件来获得额外的内存,但代价是处理和查询性能。

    我们最终做的是增加服务器上的 RAM 量,这最终暂时解决了我们的问题。唯一其他真正的替代“解决方案”是限制模型中所需的数据量或将部署扩展到其他服务器(例如将服务移动到另一台服务器)。

    我怀疑您的情况是您的 SSAS 服务内存不足,因为您的 SQL Server 服务也托管在同一台服务器上。基本上,您需要将这些服务彼此隔离,或者在服务器上有足够的 RAM 让它们并行运行。如果可能,我强烈建议将您的 SSAS 服务隔离到不同的服务器,但许可挑战可能会影响这一点,因此请确保有足够的 RAM。

    您可以修改的其他内容是位于 msmdsrv.ini 文件中的配置设置,但对于我们的场景,我们在这些方面没有取得太大成功,从而在内存耗尽的最终结果中产生任何显着差异。

    • 7
  2. Jerry Chuen
    2019-07-24T00:28:10+08:002019-07-24T00:28:10+08:00

    我遇到了类似的问题,在我们开始使用 Azure 分析服务之前,我不得不找到一种解决方法,使用 SSAS 标准版,无论你的本地服务器是否有 64GB 内存,它只能分配 16GB 内存。

    如果您使用的是企业版,我建议您考虑在数据模型的表中创建分区,并且最近仅更新了刷新记录。否则,如果您运行的是标准版,则分两部分或更多部分刷新您的模型。例如,将 19 个表放在一项作业中,具体取决于表的大小。尝试平衡它。

    {  
      "refresh": {  
        "type": "full",  
        "objects": [  
          {  
                     "database":"AdventureWorks",
                    "table":"A"
          }  
          , 
          {  
                     "database":"AdventureWorks",
                    "table":"B"
          }  
          , 
          {  
                     "database":"AdventureWorks",
                    "table":"C"
          }  
          ,     
          {  
                     "database":"AdventureWorks",
                    "table":"D"
          }  
          ,
          {  
                     "database":"AdventureWorks",
                    "table":"E"
          }  
    
          ,
          ....
    
    
        ]  
      }  
    
    }
    

    我认为更好的解决方案是根据数据模型的大小在 Azure 上使用这些 S 计划中的任何一个,然后使用表分区。

    • 2

相关问题

  • 在 Microsoft BI 中查找改进材料

  • SSAS:移动 tempdb 数据库

  • OLAP 多维数据集中的布尔字段

  • SQL Server 2008 分析服务 DSO 属性

  • SSAS 维度层次结构导致部署错误

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve