Configuración de SQL Server Analysis Services para generar archivos de volcado de memoria

En este artículo se describe cómo configurar SQL Server Analysis Services para generar automáticamente archivos de volcado de memoria.

Versión del producto original: SQL Server
Número de KB original: 919711

Introducción

En este artículo se describe cómo configurar las compilaciones de Microsoft SQL Server Analysis Services (SSAS) 2012 o versiones posteriores para generar automáticamente diferentes tipos de archivos de volcado de memoria cuando encuentra excepciones. En el artículo también se describe cómo usar la utilidad Sqldumper.exe para obtener manualmente un archivo de volcado de memoria para el proceso de SQL Server Analysis Services.

Más información

De forma predeterminada, SQL Server Analysis Services genera automáticamente archivos de minivolcado cuando se produce una excepción. Para la instalación predeterminada, los archivos minidump se escriben en la ubicación predeterminada:

Versión de Analysis Services Ubicación
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 es un marcador de posición para el valor correspondiente de SQL Server Analysis Services versión.

La ubicación del registro de instancia de SQL Server Analysis Services se puede modificar después de la instalación, por lo que puede comprobar la ubicación del registro revisando el archivo msmdsrv.ini para el SQL Server Analysis Services instalado.

Para determinar el valor correspondiente del sistema, determine el valor de la clave de registro de ImagePath, debe contener la ruta de acceso a la ruta de acceso de configuración que contiene el msmdsrv.ini.

Versión de Analysis Services Subclave del Registro
Instancia predeterminada HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServerOLAPService\ImagePath
Instancia con nombre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSOLAP$InstanceName\ImagePath

Los archivos de minivolcado incluirán la siguiente información:

  • Todas las pilas de subprocesos

  • Memoria de segundo orden a la que hacen referencia los punteros de la pila

  • Información sobre el bloque de entorno de proceso (PEB)

  • Información sobre el bloque de entorno de subproceso (TEB)

  • Información sobre los módulos descargados recientemente

  • Información de estado del subproceso

La sección Excepción del archivo Msmdsrv.ini controla la generación de archivos de volcado de memoria. De forma predeterminada, el archivo se encuentra en la %ProgramFiles%\Microsoft SQL Server\MSASxx.InstanceName\OLAP\Config carpeta . MSASxx es un marcador de posición para la versión correspondiente de SQL Server Analysis Service. Al abrir el archivo en el Bloc de notas, observa una sección en la etiqueta XML de excepción similar a la siguiente:

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

Puede controlar el comportamiento de generar el archivo de volcado de memoria modificando la configuración de esta sección. También puede modificar esta configuración en SQL Server Management Studio. Para obtener más información sobre esta configuración, visite el sitio web de descarga de SQL Server Management Studio: Propiedades del registro.

Deshabilitar el archivo de volcado de memoria automático para Analysis Services

El valor de la configuración CreateAndSendCrashReports determina si se generará un archivo de volcado de memoria. Esta configuración puede tener uno de los valores que se enumeran en la tabla siguiente.

Valor Descripción
0 Este valor especifica que Analysis Services no genera ningún archivo de volcado de memoria. Además, se omite el valor de la otra configuración en la sección Excepción.
1 Este valor predeterminado habilita el archivo de volcado de memoria. Sin embargo, SQL Server Analysis Services no envía un informe de error a Microsoft.
2 Este valor especifica que SQL Server Analysis Services genera un archivo de volcado de memoria y envía un informe de errores a Microsoft.

Cuando la configuración CreateAndSendCrashReports se establece en 1 o 2, la otra configuración de la sección Excepción puede controlar el tipo del archivo de volcado de memoria y qué información incluir en el archivo de volcado de memoria.

Configuración de SQL Server Analysis Services para generar un archivo de volcado de memoria completo automáticamente

Para configurar SQL Server Analysis Services para generar automáticamente un archivo de volcado completo cuando se produzca una excepción, puede establecer la opción SQLDumperFlagsOn en 0x34. Además, si desea configurar SQL Server Analysis Services para generar un archivo de volcado completo que incluya la información del identificador, puede establecer la opción SQLDumperFlagsOn en 0x34 y la opción MiniDumpFlagsOn en 0x4. Por ejemplo, la sección Excepción del archivo Msmdsrv.ini puede ser similar a la siguiente:

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

Generar un archivo de volcado de memoria completo que incluya información de identificador manualmente

Para solucionar problemas como un servidor que deja de responder (se bloquea), es posible que desee generar un archivo de volcado completo que incluya información de control manualmente. Para ello, puede ejecutar la utilidad Sqldumper.exe en el símbolo del sistema junto con los argumentos siguientes:

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

Nota:

PID representa el identificador de proceso del proceso de SQL Server Analysis Services. PathToDumpFile representa la carpeta en la que se escribe el archivo de volcado.

Debe ejecutar este comando desde el directorio compartido donde instaló la instancia, o bien debe especificar la ruta de acceso completa del archivo Sqldumper.exe en el comando.

Versión de Analysis Services Ubicación
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

Por ejemplo, el directorio predeterminado para ejecutar sqldumper.exe para SQL Server Analysis Services 2019 es C:\Program Files\Microsoft SQL Server\1590\Shared.

Más información

Puede usar la configuración SQLDumperFlagsOn para especificar las distintas marcas sqldumper. En la tabla siguiente se enumeran los valores de máscara de bits que puede usar como valor para el parámetro flag.

Nombre mnemotécnico Valor hexadecimal Descripción
SQLDUMPER_DBGBREAK 0x0001 Esta marca hace que la utilidad Sqldumper.exe ejecute la llamada a la API DebugBreak al principio del programa cuando se analizan los parámetros. Normalmente, los profesionales de servicios de soporte técnico de Microsoft no usarán esta marca porque la marca solo se usa para depurar Sqldumper.exe problemas de la utilidad.
Nota Esta marca se divide en el proceso de Sqldumper.exe. Esta marca no interrumpe el proceso en el que la utilidad Sqldumper.exe está depurando.
SQLDUMPER_NOMINIDUMP 0x0002 Cuando se usa esta marca, la utilidad Sqldumper.exe no genera un archivo de volcado de memoria. Esta marca se usa para probar la utilidad Sqldumper.exe.
SQLDUMPER_NOWATSON 0x0004 Normalmente, esta marca se usa cuando se generan manualmente archivos de volcado de memoria. Esta marca invalida el comportamiento predeterminado de informes de errores. De forma predeterminada, el archivo de volcado se envía al sitio de informes de errores configurado en el Registro.
SQLDUMPER_REFERENCED_MEMORY 0x0008 Esta marca hace que la utilidad Sqldumper.exe establezca la marca MiniDumpWithIndirectlyReferencedMemory para el parámetro MiniDumpType cuando llama a la función MiniDumpWritedump. La memoria de los punteros (solo un nivel) basados en pila (parámetros o variables locales) se almacenará en el archivo de volcado. Las pruebas revelan que determinados parámetros locales que se basan en datos de almacenamiento local de subprocesos (TLS), como el esquema de firma probabilística (PSS) y las estructuras EC, no parecen funcionar incluso cuando se establece esta marca.
SQLDUMPER_ALL_MEMORY 0x0010 Esta marca hace que la utilidad Sqldumper.exe establezca la marcaMiniDumpWithFullMemory para MiniDumpType cuando la utilidad llama a la función MiniDumpWriteDump. Este comportamiento es el mismo que el uso del comando .dump /mf en el depurador. Sin embargo, también debe tener la marca de SQLDUMPER_DUMP_ALL_THREADS establecida en activado para asegurarse de que se incluyen todas las pilas de subprocesos.
SQLDUMPER_DUMP_ALL_THREADS 0x0020 Esta marca no es necesaria cuando se ejecuta manualmente la utilidad Sqldumper.exe y se especifica un valor de parámetro ThreadId de 0. Un valor de parámetro ThreadId de 0 indica que se deben volcar todos los subprocesos. Si especifica un valor de parámetro ThreadId específico distinto de cero, pero también usa esta marca, todos los subprocesos se escriben en el archivo de volcado. Esta marca existe porque el comportamiento típico en el proceso de Sqlservr.exe es pasar el valor de propiedad ThreadId actual del subproceso que genera el proceso de Sqlservr.exe. Cuando se produce este comportamiento, la marca es necesaria como una opción para volcar todos los subprocesos.
SQLDUMPER_MATCH_FILE_NAME 0x0040 Puede usar esta marca para intentar forzar a la utilidad Sqldumper.exe a generar un nombre de archivo de volcado de memoria similar a una convención de nomenclatura específica. Esta convención de nomenclatura específica puede basarse en un nombre de archivo existente. Dado que debe configurar una estructura de memoria especial que contenga el nombre de archivo existente en su propio programa y, a continuación, pasar ese puntero a la utilidad Sqldumper.exe como parámetro SqlInfoPtr, esta marca no resulta útil al ejecutar manualmente la utilidad Sqldumper.exe.
SQLDUMPER_SKIP_DW_REG_READ 0x0080 Esta marca hace que la utilidad Sqldumper.exe no use el Registro como ruta de acceso para la ejecución del programa de Dw15.exe. El programa Dw15.exe se usa para cargar los archivos de volcado en el sitio de informes de errores.
SQLDUMPER_VERBOSE 0x0100 Esta marca puede ser valiosa si no está seguro de los parámetros que la utilidad Sqldumper.exe cree que se usan como entrada. Cuando se usa esta marca, la utilidad Sqldumper.exe muestra los valores de parámetro y cuántos valores de parámetro se especificaron desde la línea de comandos.
SQLDUMPER_WAIT_AT_EXIT 0x0200 Puede usar esta marca para adjuntar un depurador a la utilidad Sqldumper.exe. Puede usar este depurador para solucionar cualquier problema con la utilidad Sqldumper.exe. Estos problemas pueden producirse especialmente cuando la utilidad Sqldumper.exe se genera mediante Sqlservr.exe o por otro programa. Cuando se establece esta marca, la utilidad Sqldumper.exe llama a la función SleepEx durante 15 segundos justo antes de que exista el programa Sqldumper.exe y una vez finalizadas todas las demás operaciones.
SQLDUMPER_FILTERED 0x0800 Puede usar esta marca para generar un archivo de volcado filtrado. SQL Server Analysis Services aún no admite esta marca.

Puede usar la configuración MiniDumpFlagsOn para proporcionar marcas de minivolcado. En la tabla siguiente se enumeran las marcas de minivolcado disponibles:

Opción Valor Descripción
MiniDumpNormal 0x00000000 Cree un archivo de mini volcado típico que use la sobrescritura.
MiniDumpWithDataSegs 0x00000001 Incluya un segmento de datos para todos los módulos cargados. Marca que los módulos cargados recuperan variables globales.
MiniDumpWithFullMemory 0x00000002 Cree un archivo de volcado de usuario completo. Cuando se establece la marca, se deshabilita un archivo de volcado filtrado.
MiniDumpWithHandleData 0x00000004 Incluir información de identificador.
MiniDumpFilterMemory 0x00000010 La memoria del almacén de pila y de respaldo debe examinarse en busca de referencias de puntero a los módulos de la lista de módulos. El usuario no debe usar esta marca para SQL Server Analysis Services.
MiniDumpWithUnloadedModules 0x00000020 Esta marca proporciona información sobre los módulos descargados recientemente. Solo Microsoft Windows XP y Microsoft Windows Server 2003 admiten esta marca. El sistema operativo no mantiene la información de los módulos descargados hasta Windows Server 2003 Service Pack 1 (SP1) y Windows XP Service Pack 2 (SP2).
MiniDumpWithIndirectlyReferencedMemory 0x00000040 Incluya páginas que tengan datos a los que hacen referencia las variables locales o a otra memoria de pila.
MiniDumpFilterModulePaths 0x00000080 Si la ruta de acceso del módulo se quita de la información del módulo, no use esta marca.
MiniDumpWithProcessThreadData 0x00000100 Esta marca proporciona información sobre el bloque de entorno de proceso (PEB) y el bloque de entorno de subproceso (TEB).
MiniDumpWithPrivateReadWriteMemory 0x00000200 Examine el espacio de direcciones virtuales para ver otros tipos de memoria que se van a incluir.
MiniDumpWithoutOptionalData 0x00000400 Reduzca los datos que se vuelcan eliminando las regiones de memoria que no son necesarias. Haga esto para cumplir los criterios especificados para el archivo de volcado. El uso de esta marca puede evitar el volcado de memoria que puede contener datos privados para el usuario. Sin embargo, esto no es una garantía de que no habrá información privada. No use esta marca.
MiniDumpWithFullMemoryInfo 0x00000800 Incluya información descriptiva de la región de memoria enumerada.
MiniDumpWithThreadInfo 0x00001000 Incluir información de estado del subproceso.
MiniDumpWithCodeSegs 0x00002000 Incluya el código y las secciones relacionadas con el código para todos los módulos cargados.

Referencias

Cómo usar la utilidad Sqldumper.exe para generar un archivo de volcado de memoria en SQL Server