Konfigurera SQL Server Analysis Services för att generera minnesdumpfiler

Den här artikeln beskriver hur du konfigurerar SQL Server Analysis Services för att automatiskt generera minnesdumpfiler.

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 919711

Inledning

Den här artikeln beskriver hur du konfigurerar Microsoft SQL Server Analysis Services (SSAS) 2012 eller senare versioner för att automatiskt generera olika typer av minnesdumpfiler när undantag uppstår. Artikeln beskriver också hur du använder verktyget Sqldumper.exe för att manuellt hämta en minnesdumpfil för SQL Server Analysis Services processen.

Mer information

Som standard genererar SQL Server Analysis Services automatiskt minidump-filer när ett undantag inträffar. För standardinstallationen skrivs minidump-filerna till standardplatsen:

Analysis Services-version Plats
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

Obs!

InstanceName är en platshållare för motsvarande värde för SQL Server Analysis Services version.

Loggplatsen för SQL Server Analysis Services instans kan ändras efter installationen, så att du kan verifiera loggplatsen genom att granska msmdsrv.ini-filen för den installerade SQL Server Analysis Services.

För att fastställa motsvarande värde för systemet fastställer du värdet för ImagePath-registernyckeln. Den ska innehålla sökvägen till konfigurationssökvägen som innehåller msmdsrv.ini.

Analysis Services-version Registerundernyckel
Standardinstans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServerOLAPService\ImagePath
Namngiven instans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSOLAP$InstanceName\ImagePath

Minidump-filerna innehåller följande information:

  • Alla trådstackar

  • Andra ordningens minne som refereras av pekare på stacken

  • Information om processmiljöblocket (PEB)

  • Information om TEB (Thread Environment Block)

  • Information om nyligen borttagna moduler

  • Information om trådtillstånd

Avsnittet Undantag i Msmdsrv.ini-filen styr genereringen av minnesdumpfilen. Filen finns som standard i %ProgramFiles%\Microsoft SQL Server\MSASxx.InstanceName\OLAP\Config mappen . MSASxx är en platshållare för motsvarande version för SQL Server Analysis Service. När du öppnar filen i Anteckningar ser du ett avsnitt i xml-taggen Undantag som liknar följande:

<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>

Du kan styra hur minnesdumpfilen genereras genom att ändra inställningarna i det här avsnittet. Du kan också ändra de här inställningarna i SQL Server Management Studio. Mer information om de här inställningarna finns på SQL Server Management Studio nedladdningswebbplats: Loggegenskaper.

Inaktivera den automatiska minnesdumpfilen för Analysis Services

Värdet för inställningen CreateAndSendCrashReports avgör om en minnesdumpfil ska genereras. Den här inställningen kan ha ett av de värden som anges i följande tabell.

Värde Beskrivning
0 Det här värdet anger att Analysis Services inte genererar någon minnesdumpfil. Dessutom ignoreras värdet för de andra inställningarna under avsnittet Undantag.
1 Det här standardvärdet aktiverar minnesdumpfilen. Men SQL Server Analysis Services skickar ingen felrapport till Microsoft.
2 Det här värdet anger att SQL Server Analysis Services genererar en minnesdumpfil och skickar en felrapport till Microsoft.

När inställningen CreateAndSendCrashReports är inställd på 1 eller 2 kan de andra inställningarna i avsnittet Undantag styra typen av minnesdumpfil och vilken information som ska inkluderas i minnesdumpfilen.

Konfigurera SQL Server Analysis Services för att generera en fullständig dumpfil automatiskt

Om du vill konfigurera SQL Server Analysis Services att generera en fullständig dumpfil automatiskt när ett undantag inträffar kan du ange inställningen SQLDumperFlagsOn till 0x34. Om du vill konfigurera SQL Server Analysis Services för att generera en fullständig dumpfil som innehåller referensinformationen kan du dessutom ange inställningen SQLDumperFlagsOn till 0x34 och inställningen MiniDumpFlagsOn till 0x4. Avsnittet Undantag i Msmdsrv.ini-filen kan till exempel likna följande:

<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>

Generera en fullständig dumpfil som innehåller hantera information manuellt

Om du vill felsöka problem, till exempel en server som slutar svara (låser sig), kanske du vill generera en fullständig dumpfil som innehåller hantera information manuellt. Det gör du genom att köra verktyget Sqldumper.exe i kommandotolken tillsammans med följande argument:

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

Obs!

PID representerar process-ID:t för SQL Server Analysis Services processen. PathToDumpFile representerar mappen som dumpfilen skrivs till.

Du måste köra det här kommandot från den delade katalogen där du installerade instansen, eller så måste du ange den fullständiga sökvägen till den Sqldumper.exe filen i kommandot .

Analysis Services-version Plats
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

Standardkatalogen som ska köras sqldumper.exe för SQL Server Analysis Services 2019 är C:\Program Files\Microsoft SQL Server\1590\Sharedtill exempel .

Mer information

Du kan använda inställningen SQLDumperFlagsOn för att ange de olika SQLDumper-flaggorna. I följande tabell visas de bitmaskvärden som du kan använda som ett värde för flaggparametern.

Mnemonic-namn Hexadecimalt värde Beskrivning
SQLDUMPER_DBGBREAK 0x0001 Den här flaggan gör att Sqldumper.exe-verktyget kör API-anropet DebugBreak i början av programmet när parametrarna parsas. Microsofts supportpersonal använder vanligtvis inte den här flaggan eftersom flaggan endast används för att felsöka Sqldumper.exe verktygsproblem.
Observera Den här flaggan bryter in i Sqldumper.exe processen. Den här flaggan bryter inte in i processen som Sqldumper.exe-verktyget felsöker.
SQLDUMPER_NOMINIDUMP 0x0002 När du använder den här flaggan genererar inte Sqldumper.exe-verktyget en dumpfil. Den här flaggan används för att testa verktyget Sqldumper.exe.
SQLDUMPER_NOWATSON 0x0004 Vanligtvis används den här flaggan när du manuellt genererar dumpfiler. Den här flaggan åsidosätter standardbeteendet för felrapportering. Som standard skickas dumpfilen till felrapporteringsplatsen som har konfigurerats i registret.
SQLDUMPER_REFERENCED_MEMORY 0x0008 Den här flaggan gör att Sqldumper.exe-verktyget anger flaggan MiniDumpWithIndirectlyReferencedMemory för parametern MiniDumpType när den anropar funktionen MiniDumpWritedump. Minne för pekare (endast en nivå) som är stackbaserade (parametrar eller lokala variabler) lagras i dumpfilen. Testningen visar att vissa lokala parametrar som baseras på TLS-data (Thread Local Storage), till exempel PSS (Probabilistic Signature Scheme) och EC-strukturer, inte verkar fungera även när du anger den här flaggan.
SQLDUMPER_ALL_MEMORY 0x0010 Den här flaggan gör att Sqldumper.exe-verktyget anger flagganMiniDumpWithFullMemory för MiniDumpType när verktyget anropar funktionen MiniDumpWriteDump. Det här beteendet är detsamma som att använda kommandot .dump /mf under felsökningsprogrammet. Du måste dock också ha flaggan SQLDUMPER_DUMP_ALL_THREADS inställd på för att se till att alla trådstackar ingår.
SQLDUMPER_DUMP_ALL_THREADS 0x0020 Den här flaggan krävs inte när du kör Sqldumper.exe-verktyget manuellt och du anger ett ThreadId-parametervärde på 0. Ett ThreadId-parametervärde på 0 anger att alla trådar ska dumpas. Om du anger ett specifikt, icke-noll ThreadId-parametervärde, men du även använder den här flaggan, skrivs alla trådar till dumpfilen. Den här flaggan finns eftersom det vanliga beteendet i Sqlservr.exe processen är att skicka in det aktuella ThreadId-egenskapsvärdet för den tråd som skapar Sqlservr.exe processen. När det här beteendet inträffar behövs flaggan som ett alternativ för att dumpa alla trådar.
SQLDUMPER_MATCH_FILE_NAME 0x0040 Du kan använda den här flaggan för att försöka tvinga Sqldumper.exe-verktyget att generera ett dumpfilnamn som liknar en specifik namngivningskonvention. Den här specifika namngivningskonventionen kan baseras på ett befintligt filnamn. Eftersom du måste konfigurera en särskild minnesstruktur som innehåller det befintliga filnamnet i ditt eget program och sedan skicka pekaren till Sqldumper.exe-verktyget som SqlInfoPtr-parametern, är den här flaggan inte användbar när du kör Sqldumper.exe-verktyget manuellt.
SQLDUMPER_SKIP_DW_REG_READ 0x0080 Den här flaggan gör att Sqldumper.exe-verktyget inte använder registret som sökväg för körning av Dw15.exe-programmet. Det Dw15.exe programmet används för att ladda upp dumpfilerna till felrapporteringsplatsen.
SQLDUMPER_VERBOSE 0x0100 Den här flaggan kan vara värdefull om du inte är säker på vilka parametrar som Sqldumper.exe-verktyget tror används som indata. När du använder den här flaggan visar Sqldumper.exe-verktyget parametervärdena och hur många parametervärden som angavs från kommandoraden.
SQLDUMPER_WAIT_AT_EXIT 0x0200 Du kan använda den här flaggan för att koppla ett felsökningsprogram till Sqldumper.exe-verktyget. Du kan använda det här felsökningsprogrammet för att felsöka eventuella problem med verktyget Sqldumper.exe. Dessa problem kan särskilt uppstå när verktyget Sqldumper.exe skapas av Sqlservr.exe eller av ett annat program. När du anger den här flaggan anropar Sqldumper.exe-verktyget SleepEx-funktionen i 15 sekunder precis innan det Sqldumper.exe programmet finns och när alla andra åtgärder har slutförts.
SQLDUMPER_FILTERED 0x0800 Du kan använda den här flaggan för att generera en filtrerad dumpfil. SQL Server Analysis Services stöder inte den här flaggan ännu.

Du kan använda inställningen MiniDumpFlagsOn för att tillhandahålla minidumpflaggor. I följande tabell visas tillgängliga minidumpflaggor:

Alternativ Värde Beskrivning
MiniDumpNormal 0x00000000 Skapa en typisk minidumpfil som använder överskrivning.
MiniDumpWithDataSegs 0x00000001 Inkludera ett datasegment för alla inlästa moduler. Flaggan som de inlästa modulerna hämtar globala variabler.
MiniDumpWithFullMemory 0x00000002 Skapa en fullständig användardumpfil. En filtrerad dumpfil inaktiveras när flaggan anges.
MiniDumpWithHandleData 0x00000004 Inkludera referensinformation.
MiniDumpFilterMemory 0x00000010 Stack- och säkerhetskopieringslagringsminnet ska genomsökas efter pekarreferenser till moduler i modullistan. Användaren bör inte använda den här flaggan för SQL Server Analysis Services.
MiniDumpWithUnloadedModules 0x00000020 Den här flaggan innehåller information om nyligen borttagna moduler. Endast Microsoft Windows XP och Microsoft Windows Server 2003 stöder den här flaggan. Operativsystemet behåller inte information för oladdade moduler förrän Windows Server 2003 Service Pack 1 (SP1) och Windows XP Service Pack 2 (SP2).
MiniDumpWithIndirectlyReferencedMemory 0x00000040 Inkludera sidor som har data som refereras av lokalbefolkningen eller av annat stackminne.
MiniDumpFilterModulePaths 0x00000080 Om modulsökvägen tas bort från modulinformationen ska du inte använda den här flaggan.
MiniDumpWithProcessThreadData 0x00000100 Den här flaggan innehåller information om PROCESS Environment Block (PEB) och TEB (Thread Environment Block).
MiniDumpWithPrivateReadWriteMemory 0x00000200 Sök igenom det virtuella adressutrymmet efter andra typer av minne som ska inkluderas.
MiniDumpWithoutOptionalData 0x00000400 Minska de data som dumpas genom att eliminera minnesregioner som inte krävs. Gör detta för att uppfylla kriterier som anges för dumpfilen. Med den här flaggan kan du undvika att dumpa minne som kan innehålla data som är privata för användaren. Detta är dock inte en garanti för att ingen privat information kommer att finnas. Använd inte den här flaggan.
MiniDumpWithFullMemoryInfo 0x00000800 Inkludera beskrivande information om uppräknat minnesområde.
MiniDumpWithThreadInfo 0x00001000 Inkludera information om trådtillstånd.
MiniDumpWithCodeSegs 0x00002000 Inkludera kod- och kodrelaterade avsnitt för alla inlästa moduler.

Referenser

Så här använder du verktyget Sqldumper.exe för att generera en dumpfil i SQL Server