Ssas

SSAS 模型刷新 - 沒有足夠的記憶體來完成此操作錯誤

  • July 23, 2019

我們已經開始遇到有關刷新表格 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 尋求“正式”建議. 為了清楚起見,我們遇到的錯誤如下:

由於沒有足夠的記憶體可供應用程序使用,該操作已被取消。如果使用 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 文件中的配置設置,但對於我們的場景,我們並沒有取得太大的成功,這些設置在記憶體耗盡的最終結果上產生了任何顯著差異。

引用自:https://dba.stackexchange.com/questions/232833