Konfigurieren von SQL Server Analysis Services zum Generieren von Speicherabbilddateien

In diesem Artikel wird beschrieben, wie Sie SQL Server Analysis Services konfigurieren, um Speicherabbilddateien automatisch zu generieren.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 919711

Einführung

In diesem Artikel wird beschrieben, wie Sie Builds von Microsoft SQL Server Analysis Services (SSAS) 2012 oder höher konfigurieren, um automatisch verschiedene Typen von Speicherabbilddateien zu generieren, wenn Ausnahmen auftreten. Der Artikel beschreibt auch, wie Sie das Hilfsprogramm Sqldumper.exe verwenden, um manuell eine Speicherabbilddatei für den SQL Server Analysis Services Prozess abzurufen.

Weitere Informationen

Standardmäßig generiert SQL Server Analysis Services automatisch Minidumpdateien, wenn eine Ausnahme auftritt. Bei der Standardinstallation werden die Minidumpdateien an den Standardspeicherort geschrieben:

Version von Analysis Services Standort
2019 %ProgramFiles%\Microsoft SQL Server\MSAS15.InstanceName\OLAP\log
2017 %ProgramFiles%\Microsoft SQL Server\MSAS14.InstanceName\OLAP\log
2016 %ProgramFiles%\Microsoft SQL Server MSAS13.InstanceName\OLAP\log
2014 %ProgramFiles%\Microsoft SQL Server MSAS12.InstanceName\OLAP\log
2012 %ProgramFiles%\Microsoft SQL Server MSAS11.InstanceName\OLAP\log

Hinweis

InstanceName ist ein Platzhalter für den entsprechenden Wert für SQL Server Analysis Services Version.

Der SQL Server Analysis Services instance Protokollspeicherort kann nach der Installation geändert werden, sodass Sie den Protokollspeicherort überprüfen können, indem Sie die msmdsrv.ini-Datei für die installierte SQL Server Analysis Services überprüfen.

Um den entsprechenden Wert für das System zu bestimmen, bestimmen Sie den Wert des ImagePath-Registrierungsschlüssels. Er sollte den Pfad zum Konfigurationspfad enthalten, der die msmdsrv.ini enthält.

Version von Analysis Services Registrierungsunterschlüssel
Standardinstanz HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServerOLAPService\ImagePath
Benannte instance HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSOLAP$InstanceName\ImagePath

Die Minidumpdateien enthalten die folgenden Informationen:

  • Alle Threadstapel

  • Speicher zweiter Ordnung, auf den von Zeigern im Stapel verwiesen wird

  • Informationen zum Prozessumgebungsblock (PEB)

  • Informationen zum Thread environment block (TEB)

  • Informationen zu kürzlich entladenen Modulen

  • Threadstatusinformationen

Der Abschnitt Ausnahme in der Msmdsrv.ini-Datei steuert die Generierung der Speicherabbilddatei. Die Datei befindet sich standardmäßig im %ProgramFiles%\Microsoft SQL Server\MSASxx.InstanceName\OLAP\Config Ordner. MsASxx ist ein Platzhalter für die entsprechende Version für SQL Server Analysis Service. Wenn Sie die Datei im Editor öffnen, sehen Sie einen Abschnitt im Tag Exception XML, der dem folgenden ähnelt:

<Exception>
<CreateAndSendCrashReports>1</CreateAndSendCrashReports>
<CrashReportsFolder/>
<SQLDumperFlagsOn>0x0</SQLDumperFlagsOn>
<SQLDumperFlagsOff>0x0</SQLDumperFlagsOff>
<MiniDumpFlagsOn>0x0</MiniDumpFlagsOn>
<MiniDumpFlagsOff>0x0</MiniDumpFlagsOff>
<MinidumpErrorList>0xC1000000, 0xC1000001, 0xC1000016, 0xC11D0005, 0xC102003F</MinidumpErrorList>
<ExceptionHandlingMode>0</ExceptionHandlingMode>
<CriticalErrorHandling>1</CriticalErrorHandling>
</Exception>

Sie können das Verhalten beim Generieren der Speicherabbilddatei steuern, indem Sie die Einstellungen in diesem Abschnitt ändern. Sie können diese Einstellungen auch in SQL Server Management Studio ändern. Weitere Informationen zu diesen Einstellungen finden Sie auf der SQL Server Management Studio Downloadwebsite: Protokolleigenschaften.

Deaktivieren der automatischen Speicherabbilddatei für Analysis Services

Der Wert der Einstellung CreateAndSendCrashReports bestimmt, ob eine Speicherabbilddatei generiert wird. Diese Einstellung kann einen der Werte aufweisen, die in der folgenden Tabelle aufgeführt sind.

Wert Beschreibung
0 Dieser Wert gibt an, dass Analysis Services keine Speicherabbilddatei generiert. Darüber hinaus wird der Wert der anderen Einstellungen im Abschnitt Ausnahme ignoriert.
1 Dieser Standardwert aktiviert die Speicherabbilddatei. SQL Server Analysis Services sendet jedoch keinen Fehlerbericht an Microsoft.
2 Dieser Wert gibt an, dass SQL Server Analysis Services eine Speicherabbilddatei generiert und einen Fehlerbericht an Microsoft sendet.

Wenn die Einstellung CreateAndSendCrashReports auf 1 oder 2 festgelegt ist, können die anderen Einstellungen im Abschnitt Ausnahme den Typ der Speicherabbilddatei und die Informationen steuern, die in die Speicherabbilddatei aufgenommen werden sollen.

Konfigurieren von SQL Server Analysis Services zum automatischen Generieren einer vollständigen Speicherabbilddatei

Um SQL Server Analysis Services so zu konfigurieren, dass bei auftreten einer Ausnahme automatisch eine vollständige Speicherabbilddatei generiert wird, können Sie die Einstellung SQLDumperFlagsOn auf 0x34 festlegen. Wenn Sie SQL Server Analysis Services konfigurieren möchten, um eine vollständige Speicherabbilddatei zu generieren, die die Handleinformationen enthält, können Sie die Einstellung SQLDumperFlagsOn auf 0x34 und die MiniDumpFlagsOn-Einstellung auf 0x4 festlegen. Der Abschnitt Ausnahme in der Msmdsrv.ini-Datei kann z. B. wie folgt aussehen:

<Exception>
<CreateAndSendCrashReports>1</CreateAndSendCrashReports>
<CrashReportsFolder/>
<SQLDumperFlagsOn>0x34</SQLDumperFlagsOn>
<SQLDumperFlagsOff>0x0</SQLDumperFlagsOff>
<MiniDumpFlagsOn>0x4</MiniDumpFlagsOn>
<MiniDumpFlagsOff>0x0</MiniDumpFlagsOff>
<MinidumpErrorList>0xC1000000, 0xC1000001, 0xC1000016, 0xC11D0005, 0xC102003F</MinidumpErrorList>
<ExceptionHandlingMode>0</ExceptionHandlingMode>
<CriticalErrorHandling>1</CriticalErrorHandling>
</Exception>

Manuelles Generieren einer vollständigen Speicherabbilddatei mit Handleinformationen

Um Probleme zu beheben, z. B. einen Server, der nicht mehr reagiert (hängt), sollten Sie eine vollständige Speicherabbilddatei generieren, die manuell Handleinformationen enthält. Dazu können Sie das Hilfsprogramm Sqldumper.exe an der Eingabeaufforderung zusammen mit den folgenden Argumenten ausführen:

Sqldumper.exe PID 0 0x34:0x4 0 PathToDumpFile

Hinweis

PID stellt die Prozess-ID des SQL Server Analysis Services Prozesses dar. PathToDumpFile stellt den Ordner dar, in den die Speicherabbilddatei geschrieben wird.

Sie müssen diesen Befehl aus dem Freigegebenen Verzeichnis ausführen, in dem Sie die instance installiert haben, oder Sie müssen den vollständigen Pfad der Sqldumper.exe Datei im Befehl angeben.

Version von Analysis Services Standort
2019 %ProgramFiles%\Microsoft SQL Server\150\Shared
2017 %ProgramFiles%\Microsoft SQL Server\140\Shared
2016 %ProgramFiles%\Microsoft SQL Server\130\Shared
2014 %ProgramFiles%\Microsoft SQL Server\120\Shared
2012 %ProgramFiles%\Microsoft SQL Server\110\Shared

Das Standardverzeichnis zum Ausführen sqldumper.exe für SQL Server Analysis Services 2019 ist C:\Program Files\Microsoft SQL Server\1590\Sharedbeispielsweise .

Weitere Informationen:

Sie können die SQLDumperFlagsOn-Einstellung verwenden, um die verschiedenen SQLDumper-Flags anzugeben. In der folgenden Tabelle sind die Bitmaskenwerte aufgeführt, die Sie als Wert für den flag-Parameter verwenden können.

Mnemonischer Name Hexadezimalwert Beschreibung
SQLDUMPER_DBGBREAK 0x0001 Dieses Flag bewirkt, dass das hilfsprogramm Sqldumper.exe den API-Aufruf DebugBreak am Anfang des Programms aus führt, wenn die Parameter analysiert werden. In der Regel verwenden Microsoft Product Support Services-Experten dieses Flag nicht, da das Flag nur zum Debuggen Sqldumper.exe Hilfsprogrammprobleme verwendet wird.
Hinweis Dieses Flag unterbricht den Sqldumper.exe Prozess. Dieses Flag unterbricht nicht den Prozess, den das hilfsprogramm Sqldumper.exe debuggen.
SQLDUMPER_NOMINIDUMP 0x0002 Wenn Sie dieses Flag verwenden, generiert das Hilfsprogramm Sqldumper.exe keine Speicherabbilddatei. Dieses Flag wird verwendet, um das Hilfsprogramm Sqldumper.exe zu testen.
SQLDUMPER_NOWATSON 0x0004 In der Regel wird dieses Flag verwendet, wenn Sie Dumpdateien manuell generieren. Dieses Flag überschreibt das Standardverhalten der Fehlerberichterstattung. Standardmäßig wird die Speicherabbilddatei an die Fehlerberichtswebsite übermittelt, die in der Registrierung konfiguriert ist.
SQLDUMPER_REFERENCED_MEMORY 0x0008 Dieses Flag bewirkt, dass das Hilfsprogramm Sqldumper.exe das MiniDumpWithIndirectlyReferencedMemory-Flag für den MiniDumpType-Parameter festgelegt, wenn die MiniDumpWritedump-Funktion aufgerufen wird. Speicher für Zeiger (nur eine Ebene), die stapelbasiert sind (Parameter oder lokale Variablen), wird in der Speicherabbilddatei gespeichert. Tests zeigen, dass bestimmte lokale Parameter, die auf TLS-Daten (Thread Local Storage) basieren, wie z. B. Probabilistic Signature Scheme (PSS) und EC-Strukturen, nicht funktionieren, selbst wenn Sie dieses Flag festlegen.
SQLDUMPER_ALL_MEMORY 0x0010 Dieses Flag bewirkt, dass das Hilfsprogramm Sqldumper.exe das FlagMiniDumpWithFullMemory für MiniDumpType festschreibt, wenn das Hilfsprogramm die MiniDumpWriteDump-Funktion aufruft. Dieses Verhalten entspricht der Verwendung des Befehls .dump /mf unter dem Debugger. Sie müssen jedoch auch das flag SQLDUMPER_DUMP_ALL_THREADS auf On festgelegt haben, um sicherzustellen, dass alle Threadstapel enthalten sind.
SQLDUMPER_DUMP_ALL_THREADS 0x0020 Dieses Flag ist nicht erforderlich, wenn Sie das Hilfsprogramm Sqldumper.exe manuell ausführen und den ThreadId-Parameterwert 0 angeben. Der ThreadId-Parameterwert 0 gibt an, dass alle Threads gesichert werden sollen. Wenn Sie einen bestimmten ThreadId-Parameterwert ungleich Null angeben, aber auch dieses Flag verwenden, werden alle Threads in die Dumpdatei geschrieben. Dieses Flag ist vorhanden, da das typische Verhalten im Sqlservr.exe Prozess darin besteht, den aktuellen ThreadId-Eigenschaftswert des Threads zu übergeben, der den Sqlservr.exe Prozess erzeugt. Wenn dieses Verhalten auftritt, wird das Flag als Option benötigt, um alle Threads abzubilden.
SQLDUMPER_MATCH_FILE_NAME 0x0040 Sie können dieses Flag verwenden, um zu erzwingen, dass das Hilfsprogramm Sqldumper.exe einen Dumpdateinamen generiert, der einer bestimmten Namenskonvention ähnelt. Diese spezifische Namenskonvention kann auf einem vorhandenen Dateinamen basieren. Da Sie eine spezielle Speicherstruktur einrichten müssen, die den vorhandenen Dateinamen in Ihrem eigenen Programm enthält, und diesen Zeiger dann als SqlInfoPtr-Parameter an das hilfsprogramm Sqldumper.exe übergeben müssen, ist dieses Flag nicht nützlich, wenn Sie das Hilfsprogramm Sqldumper.exe manuell ausführen.
SQLDUMPER_SKIP_DW_REG_READ 0x0080 Dieses Flag bewirkt, dass das hilfsprogramm Sqldumper.exe die Registrierung nicht als Pfad für die Ausführung des Dw15.exe Programms verwendet. Das Dw15.exe-Programm wird verwendet, um die Speicherabbilddateien auf die Fehlerberichterstattungswebsite hochzuladen.
SQLDUMPER_VERBOSE 0x0100 Dieses Flag kann nützlich sein, wenn Sie sich nicht sicher sind, welche Parameter das Sqldumper.exe Hilfsprogramm als Eingabe verwendet. Wenn Sie dieses Flag verwenden, zeigt das hilfsprogramm Sqldumper.exe die Parameterwerte und die Anzahl der Parameterwerte an, die über die Befehlszeile angegeben wurden.
SQLDUMPER_WAIT_AT_EXIT 0x0200 Sie können dieses Flag verwenden, um einen Debugger an das Hilfsprogramm Sqldumper.exe anzufügen. Sie können diesen Debugger verwenden, um Probleme mit dem Hilfsprogramm Sqldumper.exe zu beheben. Diese Probleme können insbesondere auftreten, wenn das hilfsprogramm Sqldumper.exe von Sqlservr.exe oder einem anderen Programm erzeugt wird. Wenn Sie dieses Flag festlegen, ruft das hilfsprogramm Sqldumper.exe die SleepEx-Funktion 15 Sekunden lang auf, bevor das Sqldumper.exe Programm vorhanden ist und nachdem alle anderen Vorgänge abgeschlossen sind.
SQLDUMPER_FILTERED 0x0800 Sie können dieses Flag verwenden, um eine gefilterte Speicherabbilddatei zu generieren. SQL Server Analysis Services unterstützt dieses Flag noch nicht.

Sie können die MiniDumpFlagsOn-Einstellung verwenden, um Minidumpflamp-Flags bereitzustellen. In der folgenden Tabelle sind die verfügbaren Minidumpflags aufgeführt:

Option Wert Beschreibung
MiniDumpNormal 0x00000000 Erstellen Sie eine typische Minidumpdatei, die das Überschreiben verwendet.
MiniDumpWithDataSegs 0x00000001 Fügen Sie ein Datensegment für alle geladenen Module ein. Das Flag, das die geladenen Module globale Variablen abrufen.
MiniDumpWithFullMemory 0x00000002 Erstellen Sie eine vollständige Benutzerabbilddatei. Eine gefilterte Speicherabbilddatei wird deaktiviert, wenn das Flag festgelegt ist.
MiniDumpWithHandleData 0x00000004 Schließen Sie Handleinformationen ein.
MiniDumpFilterMemory 0x00000010 Stapel- und Sicherungsspeicherspeicher sollten auf Zeigerverweise auf Module in der Modulliste überprüft werden. Der Benutzer sollte dieses Flag nicht für SQL Server Analysis Services verwenden.
MiniDumpWithUnloadedModules 0x00000020 Dieses Flag enthält Informationen zu kürzlich entladenen Modulen. Dieses Flag wird nur von Microsoft Windows XP und Microsoft Windows Server 2003 unterstützt. Das Betriebssystem verwaltet keine Informationen für entladene Module bis Windows Server 2003 Service Pack 1 (SP1) und Windows XP Service Pack 2 (SP2).
MiniDumpWithIndirectlyReferencedMemory 0x00000040 Schließen Sie Seiten mit Daten ein, auf die von lokalen Instanzen oder anderen Stapelspeichern verwiesen wird.
MiniDumpFilterModulePaths 0x00000080 Wenn der Modulpfad aus den Modulinformationen entfernt wird, verwenden Sie dieses Flag nicht.
MiniDumpWithProcessThreadData 0x00000100 Dieses Flag enthält Informationen über den Prozessumgebungsblock (Process Environment Block, PEB) und den Threadumgebungsblock (Thread Environment Block, TEB).
MiniDumpWithPrivateReadWriteMemory 0x00000200 Überprüfen Sie den virtuellen Adressraum auf andere Speichertypen, die eingeschlossen werden sollen.
MiniDumpWithoutOptionalData 0x00000400 Reduzieren Sie die Daten, die gespeichert werden, indem Sie nicht erforderliche Speicherbereiche entfernen. Führen Sie dies aus, um die kriterien zu erfüllen, die für die Speicherabbilddatei angegeben sind. Die Verwendung dieses Flags kann verhindern, dass Speicher, der Daten enthalten kann, die für den Benutzer privat sind, zurückgibt. Dies ist jedoch keine Garantie dafür, dass keine privaten Informationen vorhanden sind. Verwenden Sie dieses Flag nicht.
MiniDumpWithFullMemoryInfo 0x00000800 Fügen Sie beschreibende Informationen zum Aufzählungsspeicherbereich ein.
MiniDumpWithThreadInfo 0x00001000 Fügen Sie Threadzustandsinformationen ein.
MiniDumpWithCodeSegs 0x00002000 Fügen Sie Code und codebezogene Abschnitte für alle geladenen Module ein.

References

Verwenden des Hilfsprogramms Sqldumper.exe zum Generieren einer Speicherabbilddatei in SQL Server