由于内存不足,处理SSAS表格模型失败

时间:2018-01-23 13:17:03

标签: memory ssas tabular

我有一台48 GB内存的服务器和一个sql server分析服务(表格模式),2016年安装了标准版SP1 CU7。

我可以从visual studio部署表格模型。

我可以手动运行XMLA脚本:

{
  "refresh": {
    "type": "full",
    "objects": [
      {
        "database": "MyCube"
      }
    ]
 }
}

但是当我从sql代理作业运行该脚本时,我收到此错误:

the JSON DDL request failed with the following error: Failed to execute XMLA. Error returned: 'There's not enough memory to complete this operation. Please try again later when there may be more memory available.'..   at Microsoft.AnalysisServices.Xmla.XmlaClient.CheckForSoapFault

porcessing之前的内存大约是4GB,它在处理多维数据集时会增加,但是当它达到大约18.5 GB时,就会失败。

有人知道解决方案吗?

4 个答案:

答案 0 :(得分:0)

Analysis Services SQL 2016中的表格实例仅限于16GB的RAM,如文档here所示。

答案 1 :(得分:0)

当您完成一个过程时,将保留多维数据集的工作副本,并在后台处理一个卷影副本。卷影副本准备就绪后,它将替换工作副本。基本上,这意味着在处理时,您需要的存储量是多维数据集大小的两倍。当您使用SSAS Standard Edition的每个实例具有16 GB的限制时,这可能是一个问题。

一种解决方案是首先使用clearValues进行处理,这将清空多维数据集,然后执行整个处理。更多详情,请点击http://byobi.com/2016/12/how-much-ram-do-i-need-for-my-ssas-tabular-server/

另一个选择是使用SSAS服务器的Memory \ VertiPaqPagingPolicy设置。在https://www.jamesserra.com/archive/2012/05/what-happens-when-a-ssas-tabular-model-exceeds-memory/https://www.sqlbi.com/articles/memory-settings-in-tabular-instances-of-analysis-services/

中查看更多详细信息

当然,另一个解决方案是升级到企业版。

答案 2 :(得分:0)

要跟进Greg的评论,我在工作中遇到了类似的问题,解决方法不是执行数据库刷新,而是执行表刷新。我创建了2个SQL作业。我的表格模型有40张桌子。因此,根据表的大小,我刷新一个作业中x个表的数量和其他作业中y个表的数量。您可以创建2个以上的SQL作业,并且每个作业可以包含更少的表。这样可以减少内存负载。

答案 3 :(得分:0)

您可以通过对表进行分区来处理数据的小的子集,这可以在SSMS中进行处理。 Article概述了如何实现此目标。