Freigeben über


Konfigurieren von SQL Server Analysis Services zum Generieren von Speicherabbilddateien

In diesem Artikel wird beschrieben, wie SQL Server Analysis Services so konfiguriert wird, dass Speicherabbilddateien automatisch generiert werden.

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

Einführung

In diesem Artikel wird beschrieben, wie Sie Microsoft SQL Server Analysis Services (SSAS) 2012 oder höher konfigurieren, um bei Auftreten von Ausnahmen automatisch unterschiedliche Speicherabbilddateien zu generieren. Im Artikel wird auch beschrieben, 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. Für die Standardinstallation werden die Minidumpdateien an den Standardspeicherort geschrieben:

Version von Analysis Services Location
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

Notiz

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

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

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

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

Die Minidumpdateien enthalten die folgenden Informationen:

  • Alle Threadstapel

  • Speicher der zweiten Reihenfolge, auf den zeiger im Stapel verwiesen wird

  • Informationen zum Prozessumgebungsblock (Process Environment Block, PEB)

  • Informationen zum Threadumgebungsblock (Thread Environment Block, TEB)

  • Informationen zu kürzlich entladenen Modulen

  • Threadstatusinformationen

Der Abschnitt "Ausnahme" in der Msmdsrv.ini Datei steuert die Speicherabbilddateigenerierung. 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, bemerken Sie einen Abschnitt im Exception XML-Tag, der wie folgt aussieht:

<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 des Generierens 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 Downloadwebsite von SQL Server Management Studio: 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 Abbilddatei

Um SQL Server Analysis Services so zu konfigurieren, dass eine vollständige Speicherabbilddatei automatisch generiert wird, wenn eine Ausnahme auftritt, können Sie die SQLDumperFlagsOn-Einstellung auf 0x34 festlegen. Wenn Sie SQL Server Analysis Services so konfigurieren möchten, dass eine vollständige Speicherabbilddatei erstellt wird, die die Handleinformationen enthält, können Sie die SQLDumperFlagsOn-Einstellung auf 0x34 und die MiniDumpFlagsOn-Einstellung auf 0x4 festlegen. Der Abschnitt "Ausnahme" in der Datei Msmdsrv.ini 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>

Generieren einer vollständigen Speicherabbilddatei, die Informationen manuell verarbeitet

Um Probleme wie z. B. einen Server zu beheben, der nicht mehr reagiert (hängt), möchten Sie möglicherweise eine vollständige Speicherabbilddatei generieren, die Informationen manuell verarbeitet. 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

Notiz

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

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

Version von Analysis Services Location
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, das sqldumper.exe für SQL Server Analysis Services 2019 ausgeführt werden soll, lautet C:\Program Files\Microsoft SQL Server\1590\Sharedz. B. .

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.

Mnemonic-Name Hexadezimalwert Beschreibung
SQLDUMPER_DBGBREAK 0x0001 Dieses Kennzeichen bewirkt, dass das hilfsprogramm Sqldumper.exe den DebugBreak-API-Aufruf am Anfang des Programms ausführt, wenn die Parameter analysiert werden. In der Regel verwenden Microsoft Product Support Services-Experten dieses Kennzeichen nicht, da das Kennzeichen nur zum Debuggen von Sqldumper.exe Hilfsprogrammproblemen verwendet wird.
Beachten Sie , dass dieses Kennzeichen in den Sqldumper.exe Prozess umbricht. Dieses Flag bricht nicht in den Prozess auf, den das Sqldumper.exe Hilfsprogramm debuggen soll.
SQLDUMPER_NOMINIDUMP 0x0002 Wenn Sie dieses Flag verwenden, generiert das hilfsprogramm Sqldumper.exe keine Dumpdatei. Dieses Flag wird verwendet, um das Sqldumper.exe Hilfsprogramm zu testen.
SQLDUMPER_NOWATSON 0x0004 In der Regel wird dieses Flag verwendet, wenn Sie Dumpdateien manuell generieren. Dieses Kennzeichen setzt das Standardverhalten der Fehlerberichterstattung außer Kraft. Standardmäßig wird die Speicherabbilddatei an die Fehlerberichtswebsite übermittelt, die in der Registrierung konfiguriert ist.
SQLDUMPER_REFERENCED_MEMORY 0x0008 Dieses Flag bewirkt, dass das Sqldumper.exe Hilfsprogramm "MiniDumpWithIndirectlyReferencedMemory" für den MiniDumpType-Parameter festgelegt wird, wenn die MiniDumpWritedump-Funktion aufgerufen wird. Speicher für Zeiger (nur eine Ebene), die stapelbasiert (Parameter oder lokale Variablen) sind, werden in der Speicherabbilddatei gespeichert. Tests zeigen, dass bestimmte lokale Parameter, die auf TLS-Daten (Thread Local Storage) basieren, wie z. B. probabilistisches Signaturschema (PSS) und EC-Strukturen, nicht funktionieren, auch wenn Sie dieses Flag festlegen.
SQLDUMPER_ALL_MEMORY 0x0010 Dieses Flag bewirkt, dass das hilfsprogramm Sqldumper.exe das Flag "MiniDumpWithFullMemory" für MiniDumpType festgelegt, 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 SQLDUMPER_DUMP_ALL_THREADS Flag aktiviert 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 einen ThreadId-Parameterwert von 0 angeben. Ein ThreadId-Parameterwert von 0 gibt an, dass alle Threads abgebildet werden sollen. Wenn Sie einen bestimmten, nicht null ThreadId-Parameterwert 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 spawnsiert. Wenn dieses Verhalten auftritt, wird das Flag als Option benötigt, um alle Threads abzubilden.
SQLDUMPER_MATCH_FILE_NAME 0x0040 Mit diesem Flag können Sie versuchen, das hilfsprogramm Sqldumper.exe zu erzwingen, um einen Dumpdateinamen zu generieren, der einer bestimmten Benennungskonvention ähnelt. Diese spezifische Benennungskonvention 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 dann diesen Zeiger als SqlInfoPtr-Parameter an das hilfsprogramm Sqldumper.exe übergeben, ist dieses Flag nicht hilfreich, wenn Sie das hilfsprogramm Sqldumper.exe manuell ausführen.
SQLDUMPER_SKIP_DW_REG_READ 0x0080 Dieses Kennzeichen bewirkt, dass das Sqldumper.exe Hilfsprogramm 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 Kennzeichen 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 Sqldumper.exe Hilfsprogramm die Parameterwerte und die Anzahl der Parameterwerte an, die über die Befehlszeile angegeben wurden.
SQLDUMPER_WAIT_AT_EXIT 0x0200 Sie können dieses Kennzeichen 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 Sqldumper.exe Hilfsprogramm von Sqlservr.exe oder einem anderen Programm spawniert wird. Wenn Sie dieses Kennzeichen festlegen, ruft das hilfsprogramm Sqldumper.exe die SleepEx-Funktion 15 Sekunden lang auf, bevor das Sqldumper.exe Programm vorhanden ist und 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 Minidump-Flags bereitzustellen. In der folgenden Tabelle sind die verfügbaren Minidump-Flags aufgeführt:

Option Wert Beschreibung
MiniDumpNormal 0x00000000 Erstellen Sie eine typische Miniabbilddatei, die Überschreibung verwendet.
MiniDumpWithDataSegs 0x00000001 Fügen Sie ein Datensegment für alle geladenen Module ein. Die Kennzeichnung der geladenen Module ruft globale Variablen ab.
MiniDumpWithFullMemory 0x00000002 Erstellen Sie eine vollständige Benutzerabbilddatei. Eine gefilterte Speicherabbilddatei ist deaktiviert, wenn das Flag festgelegt ist.
MiniDumpWithHandleData 0x00000004 Einschließen von Handleinformationen.
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 Kennzeichen enthält Informationen zu zuletzt entladenen Modulen. Nur Microsoft Windows XP und Microsoft Windows Server 2003 unterstützen dieses Kennzeichen. 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 Fügen Sie Seiten mit Daten hinzu, auf die von Lokalen oder von einem anderen Stapelspeicher verwiesen wird.
MiniDumpFilterModulePaths 0x00000080 Wenn der Modulpfad aus den Modulinformationen entfernt wird, verwenden Sie dieses Flag nicht.
MiniDumpWithProcessThreadData 0x00000100 Dieses Flag enthält Informationen zum Prozessumgebungsblock (Process Environment Block, PEB) und zum Thread-Umgebungsblock (THREAD Environment Block, TEB).
MiniDumpWithPrivateReadWriteMemory 0x00000200 Scannen Sie den virtuellen Adressraum, um andere Speichertypen einzubeziehen.
MiniDumpWithoutOptionalData 0x00000400 Reduzieren Sie die Daten, die abgebildet werden, indem Sie speicherbereiche entfernen, die nicht erforderlich sind. Erfüllen Sie dies, um Kriterien zu erfüllen, die für die Speicherabbilddatei angegeben sind. Die Verwendung dieses Flags kann das Dumping des Speichers vermeiden, der daten enthalten kann, die für den Benutzer privat sind. Dies ist jedoch keine Garantie dafür, dass keine privaten Informationen vorhanden sind. Verwenden Sie dieses Flag nicht.
MiniDumpWithFullMemoryInfo 0x00000800 Schließen Sie beschreibende Informationen zum aufgezählten Speicherbereich ein.
MiniDumpWithThreadInfo 0x00001000 Schließen Sie Threadstatusinformationen ein.
MiniDumpWithCodeSegs 0x00002000 Fügen Sie Code und codebezogene Abschnitte für alle geladenen Module hinzu.

References

Verwenden des Hilfsprogramms Sqldumper.exe zum Erstellen einer Abbilddatei in SQL Server