Configurare SQL Server Analysis Services per generare file di dump della memoria
Questo articolo descrive come configurare SQL Server Analysis Services per generare automaticamente file di dump della memoria.
Versione originale del prodotto: SQL Server
Numero KB originale: 919711
Introduzione
Questo articolo descrive come configurare le build di Microsoft SQL Server Analysis Services (SSAS) 2012 o versioni successive per generare automaticamente tipi diversi di file dump di memoria quando rileva eccezioni. L'articolo descrive anche come usare l'utilità Sqldumper.exe per ottenere manualmente un file di dump della memoria per il processo di SQL Server Analysis Services.
Ulteriori informazioni
Per impostazione predefinita, SQL Server Analysis Services genera automaticamente file minidump quando si verifica un'eccezione. Per l'installazione predefinita, i file minidump vengono scritti nel percorso predefinito:
Versione di Analysis Services | Posizione |
---|---|
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 |
Nota
InstanceName è un segnaposto per il valore corrispondente per SQL Server Analysis Services versione.
Il percorso del log dell'istanza di SQL Server Analysis Services può essere modificato dopo l'installazione, pertanto è possibile verificare il percorso del log esaminando il file di msmdsrv.ini per il SQL Server Analysis Services installato.
Per determinare il valore corrispondente per il sistema, determinare il valore della chiave di registrazione ImagePath, deve contenere il percorso del percorso di configurazione che contiene il msmdsrv.ini.
Versione di Analysis Services | Sottochiave del Registro di sistema |
---|---|
Istanza predefinita | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServerOLAPService\ImagePath |
Istanza denominata | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSOLAP$InstanceName\ImagePath |
I file minidump includeranno le informazioni seguenti:
Tutti gli stack di thread
Memoria di secondo ordine a cui fanno riferimento i puntatori nello stack
Informazioni sul blocco dell'ambiente di elaborazione (PEB)
Informazioni sul blocco dell'ambiente thread (TEB)
Informazioni sui moduli scaricati di recente
Informazioni sullo stato del thread
La sezione Exception nel file Msmdsrv.ini controlla la generazione di file dump di memoria. Il file per impostazione predefinita si trova nella %ProgramFiles%\Microsoft SQL Server\MSASxx.InstanceName\OLAP\Config
cartella . MSASxx è un segnaposto per la versione corrispondente per SQL Server Analysis Service. Quando si apre il file nel Blocco note, si nota una sezione del tag XML eccezione simile alla seguente:
<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>
È possibile controllare il comportamento della generazione del file di dump della memoria modificando le impostazioni in questa sezione. È anche possibile modificare queste impostazioni in SQL Server Management Studio. Per altre informazioni su queste impostazioni, visitare il sito Web di download SQL Server Management Studio: Proprietà log.
Disabilitare il file di dump automatico della memoria per Analysis Services
Il valore dell'impostazione CreateAndSendCrashReports determina se verrà generato un file di dump della memoria. Questa impostazione può avere uno dei valori elencati nella tabella seguente.
Valore | Descrizione |
---|---|
0 | Questo valore specifica che Analysis Services non genera alcun file di dump della memoria. Inoltre, il valore delle altre impostazioni nella sezione Eccezione viene ignorato. |
1 | Questo valore predefinito abilita il file di dump della memoria. Tuttavia, SQL Server Analysis Services non invia una segnalazione errori a Microsoft. |
2 | Questo valore specifica che SQL Server Analysis Services genera un file di dump della memoria e invia un report degli errori a Microsoft. |
Quando l'impostazione CreateAndSendCrashReports è impostata su 1 o 2, le altre impostazioni nella sezione Eccezione possono controllare il tipo di file dump della memoria e le informazioni da includere nel file di dump della memoria.
Configurare SQL Server Analysis Services per generare automaticamente un file di dump completo
Per configurare SQL Server Analysis Services per generare automaticamente un file dump completo quando si verifica un'eccezione, è possibile impostare l'impostazione SQLDumperFlagsOn su 0x34. Inoltre, se si desidera configurare SQL Server Analysis Services per generare un file dump completo che include le informazioni sull'handle, è possibile impostare l'impostazione SQLDumperFlagsOn su 0x34 e l'impostazione MiniDumpFlagsOn su 0x4. Ad esempio, la sezione Eccezione nel file Msmdsrv.ini può essere simile alla seguente:
<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>
Generare un file dump completo che include manualmente l'handle delle informazioni
Per risolvere i problemi, ad esempio un server che smette di rispondere (si blocca), è possibile generare un file dump completo che include manualmente le informazioni di gestione. A tale scopo, è possibile eseguire l'utilità Sqldumper.exe al prompt dei comandi insieme agli argomenti seguenti:
Sqldumper.exe PID 0 0x34:0x4 0 PathToDumpFile
Nota
PID rappresenta l'ID processo del processo SQL Server Analysis Services. PathToDumpFile rappresenta la cartella in cui viene scritto il file di dump.
È necessario eseguire questo comando dalla directory Condivisa in cui è installata l'istanza oppure specificare il percorso completo del file Sqldumper.exe nel comando .
Versione di Analysis Services | Posizione |
---|---|
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 |
Ad esempio, la directory predefinita da eseguire sqldumper.exe per SQL Server Analysis Services 2019 è C:\Program Files\Microsoft SQL Server\1590\Shared
.
Ulteriori informazioni
È possibile usare l'impostazione SQLDumperFlagsOn per specificare i diversi flag SQLDumper. Nella tabella seguente sono elencati i valori della maschera di bit che è possibile usare come valore per il parametro flag.
Nome mnemonico | Valore esadecimale | Descrizione |
---|---|---|
SQLDUMPER_DBGBREAK | 0x0001 | Questo flag fa sì che l'utilità Sqldumper.exe eserciti la chiamata API DebugBreak all'inizio del programma quando vengono analizzati i parametri. In genere, i professionisti del Servizio Supporto Tecnico Clienti Microsoft non useranno questo flag perché il flag viene usato solo per eseguire il debug di Sqldumper.exe problemi di utilità. Nota Questo flag viene interrotto nel processo di Sqldumper.exe. Questo flag non entra nel processo di debug dell'utilità Sqldumper.exe. |
SQLDUMPER_NOMINIDUMP | 0x0002 | Quando si usa questo flag, l'utilità Sqldumper.exe non genera un file di dump. Questo flag viene usato per testare l'utilità Sqldumper.exe. |
SQLDUMPER_NOWATSON | 0x0004 | In genere, questo flag viene usato quando si generano manualmente file di dump. Questo flag sostituisce il comportamento predefinito di segnalazione degli errori. Per impostazione predefinita, il file di dump viene inviato al sito di segnalazione degli errori configurato nel Registro di sistema. |
SQLDUMPER_REFERENCED_MEMORY | 0x0008 | Questo flag fa sì che l'utilità Sqldumper.exe imposti il flag MiniDumpWithIndirectlyReferencedMemory per il parametro MiniDumpType quando chiama la funzione MiniDumpWritedump. La memoria per i puntatori (solo a un livello) basati su stack (parametri o variabili locali) verrà archiviata nel file di dump. Il test rivela che alcuni parametri locali basati su dati TLS (Thread Local Storage), ad esempio lo schema di firma probabilistica (PSS, Probabilistic Signature Scheme) e le strutture EC, non sembrano funzionare anche quando si imposta questo flag. |
SQLDUMPER_ALL_MEMORY | 0x0010 | Questo flag fa sì che l'utilità Sqldumper.exe imposti il flagMiniDumpWithFullMemory per MiniDumpType quando l'utilità chiama la funzione MiniDumpWriteDump. Questo comportamento equivale all'uso del comando .dump /mf nel debugger. È tuttavia necessario che il flag SQLDUMPER_DUMP_ALL_THREADS sia impostato su on per assicurarsi che tutti gli stack di thread siano inclusi. |
SQLDUMPER_DUMP_ALL_THREADS | 0x0020 | Questo flag non è necessario quando si esegue manualmente l'utilità Sqldumper.exe e si specifica un valore del parametro ThreadId pari a 0. Un valore del parametro ThreadId pari a 0 indica che è necessario eseguire il dump di tutti i thread. Se si specifica un valore di parametro ThreadId diverso da zero, ma si usa anche questo flag, tutti i thread vengono scritti nel file di dump. Questo flag esiste perché il comportamento tipico nel processo di Sqlservr.exe consiste nel passare il valore corrente della proprietà ThreadId del thread che genera il processo Sqlservr.exe. Quando si verifica questo comportamento, il flag è necessario come opzione per eseguire il dump di tutti i thread. |
SQLDUMPER_MATCH_FILE_NAME | 0x0040 | È possibile usare questo flag per tentare di forzare l'utilità Sqldumper.exe a generare un nome di file dump simile a una convenzione di denominazione specifica. Questa convenzione di denominazione specifica può essere basata su un nome file esistente. Poiché è necessario configurare una struttura di memoria speciale che contiene il nome file esistente nel proprio programma e quindi passare tale puntatore all'utilità Sqldumper.exe come parametro SqlInfoPtr, questo flag non è utile quando si esegue manualmente l'utilità Sqldumper.exe. |
SQLDUMPER_SKIP_DW_REG_READ | 0x0080 | Questo flag fa sì che l'utilità Sqldumper.exe non usi il Registro di sistema come percorso per l'esecuzione del programma Dw15.exe. Il programma Dw15.exe viene usato per caricare i file di dump nel sito di segnalazione errori. |
SQLDUMPER_VERBOSE | 0x0100 | Questo flag può essere utile se non si è certi dei parametri che l'utilità Sqldumper.exe ritiene vengano usati come input. Quando si usa questo flag, l'utilità Sqldumper.exe visualizza i valori dei parametri e il numero di valori di parametro specificati dalla riga di comando. |
SQLDUMPER_WAIT_AT_EXIT | 0x0200 | È possibile usare questo flag per collegare un debugger all'utilità Sqldumper.exe. È possibile usare questo debugger per risolvere eventuali problemi relativi all'utilità Sqldumper.exe. Questi problemi possono verificarsi soprattutto quando l'utilità Sqldumper.exe viene generata da Sqlservr.exe o da un altro programma. Quando si imposta questo flag, l'utilità Sqldumper.exe chiama la funzione SleepEx per 15 secondi poco prima dell'esistenza del programma Sqldumper.exe e al termine di tutte le altre operazioni. |
SQLDUMPER_FILTERED | 0x0800 | È possibile usare questo flag per generare un file di dump filtrato. SQL Server Analysis Services non supporta ancora questo flag. |
È possibile usare l'impostazione MiniDumpFlagsOn per fornire flag minidump. Nella tabella seguente sono elencati i flag minidump disponibili:
Opzione | Valore | Descrizione |
---|---|---|
MiniDumpNormal | 0x00000000 | Creare un file mini-dump tipico che usa la sovrascrittura. |
MiniDumpWithDataSegs | 0x00000001 | Includere un segmento di dati per tutti i moduli caricati. Flag che i moduli caricati recuperano variabili globali. |
MiniDumpWithFullMemory | 0x00000002 | Creare un file dump utente completo. Un file di dump filtrato viene disabilitato quando il flag è impostato. |
MiniDumpWithHandleData | 0x00000004 | Includere le informazioni sull'handle. |
MiniDumpFilterMemory | 0x00000010 | La memoria dello stack e dell'archivio di backup deve essere analizzata per i riferimenti ai puntatori ai moduli nell'elenco dei moduli. L'utente non deve usare questo flag per SQL Server Analysis Services. |
MiniDumpWithUnloadedModules | 0x00000020 | Questo flag fornisce informazioni sui moduli scaricati di recente. Solo Microsoft Windows XP e Microsoft Windows Server 2003 supportano questo flag. Il sistema operativo non gestisce le informazioni per i moduli scaricati fino a Windows Server 2003 Service Pack 1 (SP1) e Windows XP Service Pack 2 (SP2). |
MiniDumpWithIndirectlyReferencedMemory | 0x00000040 | Includere pagine con dati a cui fanno riferimento variabili locali o altra memoria dello stack. |
MiniDumpFilterModulePaths | 0x00000080 | Se il percorso del modulo viene rimosso dalle informazioni del modulo, non usare questo flag. |
MiniDumpWithProcessThreadData | 0x00000100 | Questo flag fornisce informazioni sui blocchi PEB (Process Environment Block) e TEB (Thread Environment Block). |
MiniDumpWithPrivateReadWriteMemory | 0x00000200 | Analizzare lo spazio indirizzi virtuale per individuare altri tipi di memoria da includere. |
MiniDumpWithoutOptionalData | 0x00000400 | Ridurre i dati di cui viene eseguito il dump eliminando le aree di memoria non necessarie. Eseguire questa operazione per soddisfare i criteri specificati per il file di dump. L'uso di questo flag può evitare di scaricare memoria che può contenere dati privati per l'utente. Tuttavia, questa non è una garanzia che non saranno presenti informazioni private. Non usare questo flag. |
MiniDumpWithFullMemoryInfo | 0x00000800 | Includere informazioni descrittive sull'area di memoria enumerata. |
MiniDumpWithThreadInfo | 0x00001000 | Includere le informazioni sullo stato del thread. |
MiniDumpWithCodeSegs | 0x00002000 | Includere le sezioni relative al codice e al codice per tutti i moduli caricati. |
Riferimenti
Come usare l'utilità Sqldumper.exe per generare un file di dump in SQL Server
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per