it-swarm.com.de

SSAS-Modellaktualisierung - Nicht genügend Speicher, um diesen Vorgang abzuschließen. Fehler

Bei der Aktualisierung unseres tabellarischen SSAS-Modells ist ein Problem aufgetreten.

Das tabellarische SSAS-Modell enthält 38 Tabellen.

Dieser Prozess läuft seit über einem Jahr ohne Probleme. Seit etwa einem Monat können wir die Tabellen innerhalb des Modells jedoch nicht mehr erfolgreich verarbeiten.

Wenn ich auf die SSAS-Datenbank zugreife> Rechtsklick> Datenbank verarbeiten> Wählen Sie den Modus zum Verarbeiten von Standard gefolgt von OK aus. In diesem Fall tritt das Problem auf.

Es wird dort ungefähr 5 Minuten lang sitzen, bevor es mit der Fehlermeldung fehlschlägt:

Änderungen am Server konnten nicht gespeichert werden. Fehler zurückgegeben: 'Es ist nicht genügend Speicher vorhanden, um diesen Vorgang abzuschließen. Bitte versuchen Sie es später erneut, wenn möglicherweise mehr Speicher verfügbar ist.

(enter image description here

(enter image description here

Wenn ich versuche, die Tabellen einzeln zu "verarbeiten", erhalte ich auch die gleiche Fehlermeldung.

Ich habe die Speichereinstellungen für SSAS im erweiterten Fenster überprüft und die Werte auf ihre Standardeinstellungen zurückgesetzt. Die Schlüsselwerte (wie mir bekannt ist) sind derzeit:

(enter image description here

Der Server wurde mehrmals neu gestartet, wir haben immer noch das gleiche Problem.

Umgebungsdetails:

Windows Server 2016-Datencenter

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

SSAS-Version: 14.0.223.1

Servermodus: Tabellarisch

Serverspeicher: 64 GB

Zugewiesener SQL Server-Speicher: 28 GB

Ich habe mehrere Artikel online über diese Art von Problemen fertiggestellt, aber bisher scheint nichts relevant/nützlich zu sein.

Jede Anleitung/Unterstützung wäre sehr dankbar.

Haftungsausschluss: Ich bin kein BI/SSAS-Typ. Ich bin nur ein DBA, dem dieses Problem zum Anschauen gegeben wurde, also vergib mir, wenn ich das nicht richtig erkläre.

3
grouchball

TL/DR: Fügen Sie mehr Speicher hinzu, reduzieren Sie die Größe Ihrer Modelle und/oder verschieben Sie entweder die SQL Server-Dienste oder die SQL Server-Analysedienste auf einen anderen Server (zB skalieren)

Längere Erklärung: Wir haben diese Übung vor einigen Monaten mit unserem tabellarischen SSAS-Produktionsserver durchlaufen und Microsoft tatsächlich um "formelle" Empfehlungen gebeten Das Infrastruktur-Team war geizig mit RAM (was ich verstehen kann, da es nicht genau billig ist). Aus Gründen der Klarheit war der Fehler wie folgt:

Der Vorgang wurde abgebrochen, da nicht genügend Speicher für die Anwendung verfügbar ist. Wenn Sie eine 32-Bit-Version des Produkts verwenden, sollten Sie ein Upgrade auf die 64-Bit-Version in Betracht ziehen oder den auf dem Computer verfügbaren Speicher erhöhen.

Unser Server wurde ursprünglich mit 64 GB Speicher eingerichtet und beherbergte 2 SSAS-Modelle mit einer Gesamtgröße von 40 GB. Auf diesem Computer wurden keine anderen SQL Server-Dienste gehostet. An manchen Tagen würden unsere Modelle ohne Probleme verarbeitet, aber an den meisten Tagen würden sie versagen. Wir würden den Server neu starten und dann würden sie vielleicht Erfolg haben ... wenn der Wind genau richtig wäre und die Sterne und Planeten alle ausgerichtet wären.

Im Gegensatz zu mehrdimensionalen (MOLAP/ROLAP/HOLAP) Modellen werden die standardmäßigen tabellarischen Modelle vollständig in den Speicher geladen, wenn sie genutzt werden In-Memory-Technologie . Wenn die Modelle nicht vollständig in den Speicher geladen werden können, treten Probleme auf.

Leider enthält die Dokumentation von Microsoft eine Aufschlüsselung der "Speicherempfehlungen", da ich kein formelles Dokument finden kann, das etwas anderes als "Mindest" -Ebenen enthält, die zum Ausführen des Dienstes erforderlich sind. Ausgehend von dem von uns eingereichten Support-Ticket lauteten die Empfehlungen von Microsoft wie folgt:

Für ein Modell der Größe X ist eine Bereitstellung zwischen 2X - 10X RAM auf dem SSAS-Server, der vom SSAS-Dienst verwendet werden soll, was weiter von den folgenden Faktoren beeinflusst wird:

  • Die Cube-Verarbeitung erfordert 2X - 3X RAM für die vollständige Verarbeitung, die eine Schattenkopie des Modells im integrierten Speicher enthält.
  • Die Anzahl der mit dem Cube verbundenen Benutzer/Berichte erhöht sich ebenfalls RAM - Anforderungen, manchmal bis zum 10-fachen, abhängig von der Anzahl der Berichte, dem Volumen usw., da Benutzer/Berichte DAX-Abfragen generieren können, die Berechnungen durchführen oder Speichermaterialisierung (die dazu führt, dass die Engine ein nicht komprimiertes Zwischenergebnis erstellt und der Speicherverbrauch höher als erwartet ausfällt).
  • Die Anzahl der verarbeiteten Modelle kann auch den erforderlichen Speicherbedarf erhöhen.
  • Aktivieren Sie VertiPaqPagingPolicy, wenn die Einstellung deaktiviert ist, damit SSAS die OS-Auslagerungsdatei für zusätzlichen Speicher auf Kosten der Verarbeitung und der Abfrageleistung verwenden kann.

Am Ende haben wir die Menge an RAM auf unserem Server) erhöht, wodurch unsere Probleme vorerst gelöst wurden. Die einzige andere alternative "Lösung" besteht darin, die Datenmenge zu begrenzen, die Sie verwenden Sie müssen in Ihren Modellen Ihre Bereitstellung auf anderen Servern skalieren (z. B. Dienste auf einen anderen Server verschieben).

Ich vermute, dass in Ihrem Fall nicht genügend Arbeitsspeicher für Ihren SSAS-Dienst vorhanden ist, da Ihr SQL Server-Dienst auch auf demselben Server gehostet wird. Grundsätzlich müssen Sie diese Dienste entweder voneinander trennen oder über genügend RAM auf dem Server verfügen, damit sie parallel ausgeführt werden können. Ich würde dringend empfehlen, Ihre SSAS-Dienste nach Möglichkeit auf einen anderen Server zu trennen, aber Lizenzprobleme können sich darauf auswirken. Stellen Sie daher sicher, dass genügend RAM vorhanden ist.

Andere Dinge, mit denen Sie herumspielen können, sind Konfigurationseinstellungen in der Datei msmdsrv.ini, aber für unser Szenario hatten wir keinen großen Erfolg damit, was zu signifikanten Unterschieden im möglichen Ergebnis des Auslaufens führte der Erinnerung.

3
John Eisbrener

Ich hatte ein ähnliches Problem und bis wir Azure Analysis Services verwenden, musste ich eine Lösung für die SSAS-Standardversion finden, die nur 16 GB Speicher zuweisen kann, unabhängig davon, ob Ihr lokaler Server über 64 GB Speicher verfügt.

Wenn Sie Enterprise Edition verwenden, empfehle ich, Partitionen in den Tabellen in Ihrem Datenmodell zu erstellen, und nur Aktualisierungsdatensätze wurden kürzlich aktualisiert. Wenn Sie andernfalls die Standard Edition ausführen, aktualisieren Sie Ihr Modell in mindestens zwei Teilen. Fügen Sie beispielsweise 19 Tabellen in einen Job ein, abhängig von der Größe Ihrer Tabellen. Versuchen Sie es auszugleichen.

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

      ,
      ....


    ]  
  }  

}

Ich denke, eine bessere Lösung besteht darin, je nach Größe Ihres Datenmodells einen dieser S-Pläne in Azure zu verwenden und dann Tabellenpartitionen zu verwenden.

2
Jerry Chuen