Configurar 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 Microsoft SQL Server Analysis Services (SSAS) 2012 o versiones posteriores para generar automáticamente distintos tipos de archivos de volcado de memoria cuando encuentra excepciones. El artículo también describe cómo usar la herramienta de 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 de minivolcado 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 para la versión de SQL Server Analysis Services.

La ubicación del registro de instancias de SQL Server Analysis Services se puede alterar después de la instalación, de modo que pueda comprobar la ubicación del registro revisando el archivo de msmdsrv.ini de SQL Server Analysis Services instalado.

Para determinar el valor correspondiente para el sistema, determine el valor de la clave ImagePath Register, debe incluir 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 procesos (PEB)

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

  • Información acerca de los módulos recientemente descargados

  • Información de estado de subproceso

La sección de excepción del archivo de 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 Services. Al abrir el archivo en el Bloc de notas, observará una sección en la etiqueta XML de excepción que se asemeja a lo 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 la generación del archivo de volcado de memoria mediante la modificación de 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 acerca de estas opciones, visite el sitio web de descarga de SQL Server Management Studio: propiedades de registro.

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

El valor de la opció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
comprendi Este valor especifica que Analysis Services no genera ningún archivo de volcado de memoria. Además, se omite el valor de las demás opciones de configuración de 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 errores a Microsoft.
2 Este valor especifica que SQL Server Analysis Services genera un archivo de volcado de memoria y envía un informe de error a Microsoft.

Cuando la configuración de CreateAndSendCrashReports se establece en 1 o 2, el resto de la configuración de la sección excepción puede controlar el tipo de archivo de volcado de memoria y la información que se incluirá en el archivo de volcado de memoria.

Configurar SQL Server Analysis Services para generar automáticamente un archivo de volcado completo

Para configurar SQL Server Analysis Services para generar automáticamente un archivo de volcado completo cuando se produce una excepción, puede establecer la configuració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 el valor SQLDumperFlagsOn en 0x34 y la configuración MiniDumpFlagsOn en 0x4. Por ejemplo, la sección excepción del archivo de Msmdsrv.ini puede parecerse 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 completo que incluya información de control 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 la información de control de forma manual. Para ello, puede ejecutar la utilidad de Sqldumper.exe en el símbolo del sistema junto con los siguientes argumentos:

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 en el que instaló la instancia o debe especificar la ruta de acceso completa del archivo de 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 el valor SQLDumperFlagsOn para especificar las distintas marcas de SQLDumper. En la tabla siguiente se enumeran los valores de máscara de la máscara que puede usar como valor para el parámetro Flag.

Nombre de mnemotécnico Valor hexadecimal Descripción
SQLDUMPER_DBGBREAK 0x0001 Este indicador hace que la utilidad de Sqldumper.exe ejecute la llamada a la API DebugBreak al inicio del programa cuando se analizan los parámetros. Por lo general, los profesionales del servicio 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 interrumpe en el proceso de Sqldumper.exe. Esta marca no se interrumpe en el proceso que la utilidad de Sqldumper.exe está depurando.
SQLDUMPER_NOMINIDUMP 0x0002 Cuando se usa esta marca, la utilidad de Sqldumper.exe no genera un archivo de volcado. Esta marca se usa para probar la utilidad de Sqldumper.exe.
SQLDUMPER_NOWATSON 0x0004 Normalmente, esta marca se usa cuando se generan archivos de volcado de forma manual. Esta marca invalida el comportamiento predeterminado de los informes de errores. De forma predeterminada, el archivo de volcado se envía al sitio de informes de errores que se configura en el registro.
SQLDUMPER_REFERENCED_MEMORY 0x0008 Esta marca hace que la utilidad de Sqldumper.exe establezca la marca MiniDumpWithIndirectlyReferencedMemory para el parámetro MiniDumpType cuando llama a la función MiniDumpWritedump. La memoria para punteros (sólo un nivel) que se basan en la pila (parámetros o variables locales) se almacenará en el archivo de volcado. Las pruebas revelan que ciertos parámetros locales basados 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 de Sqldumper.exe establezca la marca theMiniDumpWithFullMemory para MiniDumpType cuando la utilidad llame 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 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 de Sqldumper.exe y se especifica un valor de parámetro ThreadId de 0. Un valor 0 del parámetro ThreadId indica que se deben volcar todos los subprocesos. Si especifica un valor de parámetro de ThreadId específico que no sea 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 actual de la propiedad ThreadId 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 que la utilidad de Sqldumper.exe genere un nombre de archivo de volcado que se asemeje a una Convención de nomenclatura específica. Esta Convención de nomenclatura específica puede basarse en un nombre de archivo existente. Como es necesario 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 de Sqldumper.exe como el parámetro SqlInfoPtr, este indicador no es útil cuando se ejecuta manualmente la utilidad Sqldumper.exe.
SQLDUMPER_SKIP_DW_REG_READ 0x0080 Esta marca hace que la utilidad de Sqldumper.exe no use el registro como la ruta de acceso para la ejecución del programa 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 útil si no está seguro de los parámetros que la utilidad Sqldumper.exe piensa usar como entrada. Cuando se usa esta marca, la utilidad de Sqldumper.exe muestra los valores de los parámetros y el número de valores de parámetro que se especificaron en 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 de Sqldumper.exe. Es posible que estos problemas se produzcan de forma especial cuando la utilidad de Sqldumper.exe genera Sqlservr.exe u otro programa. Cuando se establece esta marca, la utilidad de Sqldumper.exe llama a la función SleepEx durante 15 segundos justo antes de que el programa Sqldumper.exe exista y después de que finalicen todas las demás operaciones.
SQLDUMPER_FILTERED 0x0800 Puede usar esta marca para generar un archivo de volcado filtrado. SQL Server Analysis Services todavía no admite esta marca.

Puede usar el valor MiniDumpFlagsOn para proporcionar indicadores de minivolcado. En la siguiente tabla se enumeran las marcas de minivolcado disponibles:

Opción Valor Descripción
MiniDumpNormal 0x00000000 Cree un archivo de volcado de minivolcado típico que use la sobrescritura.
MiniDumpWithDataSegs 0x00000001 Incluya un segmento de datos para todos los módulos cargados. Marca los módulos cargados recuperan variables globales.
MiniDumpWithFullMemory 0x00000002 Cree un archivo de volcado de usuario completo. Un archivo de volcado filtrado está deshabilitado cuando se establece la marca.
MiniDumpWithHandleData 0x00000004 Incluir información de control.
MiniDumpFilterMemory 0x00000010 La memoria de almacenamiento de pila y de respaldo debe analizarse 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 el Service Pack 1 (SP1) de Windows Server 2003 y el Service Pack 2 (SP2) de Windows XP.
MiniDumpWithIndirectlyReferencedMemory 0x00000040 Incluye las páginas que tienen datos a los que hacen referencia locales u 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 subprocesos (TEB).
MiniDumpWithPrivateReadWriteMemory 0x00000200 Busque en el espacio de direcciones virtuales otros tipos de memoria que se van a incluir.
MiniDumpWithoutOptionalData 0x00000400 Reduzca los datos que se están volcando eliminando las áreas 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 del usuario. Sin embargo, esto no es una garantía de que exista información privada. No use esta marca.
MiniDumpWithFullMemoryInfo 0x00000800 Incluir información descriptiva de región de memoria enumerada.
MiniDumpWithThreadInfo 0x00001000 Incluir información de estado de subproceso.
MiniDumpWithCodeSegs 0x00002000 Incluya secciones relacionadas con código y código para todos los módulos cargados.

Referencias

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