我们已经开始遇到有关刷新表格 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 已经被赋予了这个问题,所以如果我不能完全正确地解释这个问题,请原谅我。
TL/DR:添加更多内存,减小模型的大小,和/或将 SQL Server 服务或 SQL Server 分析服务移动到不同的服务器(例如向外扩展)
更长的解释: 几个月前,我们用我们的表格 SSAS 生产服务器进行了这个练习,实际上,由于我们的基础架构团队对 RAM 很吝啬(我可以理解,因为它并不便宜) ,因此实际上向 Microsoft 寻求“正式”建议. 为了清楚起见,我们遇到的错误如下:
我们的服务器最初设置为 64GB 内存,并托管 2 个 SSAS 模型,总大小为 40GB。此计算机上没有托管其他 SQL Server 服务。有时我们的模型可以毫无问题地处理,但大多数时候它们会失败。我们将重新启动服务器,然后也许他们会成功……如果风恰到好处并且星星和行星都对齐。
与多维 (MOLAP/ROLAP/HOLAP) 模型不同,默认的表格模型在利用内存中技术时完全加载到内存中。如果模型无法完全加载到内存中,您就会遇到问题。
可悲的是,微软的文档分解了“内存建议”是什么,因为我找不到任何正式文档提供除了运行服务所需的“最低”级别之外的任何内容。从我们提交的支持票中,微软的建议如下:
我们最终做的是增加服务器上的 RAM 量,这最终暂时解决了我们的问题。唯一其他真正的替代“解决方案”是限制模型中所需的数据量或将部署扩展到其他服务器(例如将服务移动到另一台服务器)。
我怀疑您的情况是您的 SSAS 服务内存不足,因为您的 SQL Server 服务也托管在同一台服务器上。基本上,您需要将这些服务彼此隔离,或者在服务器上有足够的 RAM 让它们并行运行。如果可能,我强烈建议将您的 SSAS 服务隔离到不同的服务器,但许可挑战可能会影响这一点,因此请确保有足够的 RAM。
您可以修改的其他内容是位于 msmdsrv.ini 文件中的配置设置,但对于我们的场景,我们在这些方面没有取得太大成功,从而在内存耗尽的最终结果中产生任何显着差异。
我遇到了类似的问题,在我们开始使用 Azure 分析服务之前,我不得不找到一种解决方法,使用 SSAS 标准版,无论你的本地服务器是否有 64GB 内存,它只能分配 16GB 内存。
如果您使用的是企业版,我建议您考虑在数据模型的表中创建分区,并且最近仅更新了刷新记录。否则,如果您运行的是标准版,则分两部分或更多部分刷新您的模型。例如,将 19 个表放在一项作业中,具体取决于表的大小。尝试平衡它。
我认为更好的解决方案是根据数据模型的大小在 Azure 上使用这些 S 计划中的任何一个,然后使用表分区。