Use la herramienta Sqldumper.exe para generar un archivo de volcado de memoria en SQL Server

En este artículo se proporcionan directrices generales para la herramienta de Sqldumper.exe que se incluye con SQL Server. Esta herramienta se usa para generar diferentes tipos de archivos de volcado de memoria.

Versión original del producto: SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Número de KB original: 917825

Resumen

La herramienta Sqldumper.exe se incluye con Microsoft SQL Server. Genera archivos de volcado de memoria de SQL Server y procesos relacionados para la depuración. En este artículo se describe cómo usar Sqldumper.exe para generar un archivo de volcado de memoria para las tareas de informes de errores o depuración de Watson.

En el artículo también se describen otros dos métodos para generar archivos de volcado de memoria:

  • El script de PowerShell adjunto automatiza SQLDumper.exe opciones de línea de comandos.
  • El comando DBCC STACKDUMP Transact-SQL (T-SQL) se puede usar para generar un archivo de volcado de memoria en SQL Server.

Cómo ejecutar Sqldumper.exe manualmente

Ejecute la herramienta Sqldumper.exe en el contexto de la carpeta donde SQL Server instaló originalmente la herramienta.

De forma predeterminada, la ruta de instalación de Sqldumper.exe es <SQLServerInstall Drive>:\Archivos de programa\Microsoft SQL Server\90\Shared\SQLDumper.exe. Observe que <la unidad> SQLServerInstall es un marcador de posición para la unidad en la que instaló SQL Server.

Para generar un archivo de volcado de memoria mediante la herramienta Sqldumper.exe, siga estos pasos:

  1. Abra <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared folder.

    En esta ruta de acceso de carpeta, <number> es un marcador de posición para uno de los siguientes elementos:

    • 150 para SQL Server 2019
    • 140 para SQL Server 2017
    • 130 para SQL Server 2016
    • 120 para SQL Server 2014
    • 110 para SQL Server 2012
    • 100 para SQL Server 2008
    • 90 para SQL Server 2005
  2. Asegúrese de que el archivo Dbghelp.dll está en esta carpeta.

  3. Seleccione Iniciar>ejecución, escriba cmd y, a continuación, seleccione Aceptar.

  4. En el símbolo del sistema, escriba el siguiente comando y presione Entrar:

    cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
    

    Nota:

    En esta ruta de acceso de carpeta, <number> es el mismo marcador de posición que cambia con la versión de SQL Server, como se describió anteriormente.

  5. Para generar un tipo específico de archivo de volcado de memoria, escriba el comando correspondiente en el símbolo del sistema y, a continuación, presione Entrar:

    • Archivo de volcado completo:

      Sqldumper.exe <ProcessID> 0 0x01100
      
    • Archivo de volcado de memoria:

      Sqldumper.exe <ProcessID> 0 0x0120
      
    • Archivo de volcado de memoria que incluye memoria a la que se hace referencia indirectamente (esta es la opción recomendada y también la usa SQL Server de forma predeterminada cuando genera automáticamente archivos de volcado de memoria):

      Sqldumper.exe <ProcessID> 0 0x0128
      
    • Archivo de volcado filtrado:

      Sqldumper.exe <ProcessID> 0 0x8100
      

    Nota:

    <ProcessID> es un marcador de posición para el identificador de proceso de la aplicación de Windows para la que desea generar un archivo de volcado.

Si Sqldumper.exe se ejecuta correctamente, la herramienta genera un archivo de volcado en la carpeta en la que está instalada la herramienta.

El archivo de volcado que Sqldumper.exe genera tiene un patrón de nombre de archivo similar a SQLDmpr<xxxx.mdmp>.

En este patrón, <xxxx> es un número creciente que se determina en función de otros archivos que tienen un nombre de archivo similar en la misma carpeta. Si ya tiene archivos en la carpeta que tienen nombres de archivo en el patrón especificado, es posible que tenga que comparar la fecha y hora en que se creó el archivo para identificar el archivo que desea.

Obtención de un identificador de proceso de aplicación de Microsoft Windows

Para generar un archivo de volcado de memoria mediante la herramienta Sqldumper.exe, debe tener el identificador de proceso de la aplicación windows para la que desea generar un archivo de volcado de memoria. A continuación se muestra cómo obtener el identificador de proceso:

  1. Presione Ctrl+Alt+Eliminar y seleccione Administrador de tareas.
  2. En el cuadro de diálogo Administrador de tareas de Windows , seleccione la pestaña Procesos .
  3. En el menú Ver , seleccione Seleccionar columnas.
  4. En el cuadro de diálogo Seleccionar columnas , active la casilla PID (Identificador de proceso) y, a continuación, seleccione Aceptar.
  5. Tenga en cuenta el identificador de proceso de la aplicación de Windows para la que desea generar un archivo de volcado. Para la aplicación SQL Server, tenga en cuenta el identificador de proceso del proceso deSqlservr.exe.
  6. Cierre el Administrador de tareas.

Como alternativa, use el archivo de registro de errores SQL Server para obtener el identificador de proceso de la aplicación SQL Server que se ejecuta en el equipo. Parte del archivo de registro de errores SQL Server es similar al ejemplo siguiente:

2021-09-15 11:50:32.690 Server       Microsoft SQL Server 2019 (RTM-CU12) (KB5004524) - 15.0.4153.1 (X64)
    Jul 19 2021 15:37:34
    Copyright (C) 2019 Microsoft Corporation
    Enterprise Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19043: ) (Hypervisor)
2021-09-15 11:50:32.690 Server       UTC adjustment: -5:00
2021-09-15 11:50:32.690 Server       (c) Microsoft Corporation.
2021-09-15 11:50:32.690 Server       All rights reserved.
2021-09-15 11:50:32.690 Server       Server process ID is 7028.

El número que aparece después Server process ID es el identificador de proceso del proceso deSqlservr.exe .

Ruta de acceso de salida para los archivos de volcado de memoria

SQLDumper.exe existe principalmente para generar archivos de volcado de memoria para el proceso de SQL Server en escenarios en los que es necesario un volcado de memoria para resolver problemas específicos (como excepciones, aserciones, programadores que no producen). En tales casos, SQL Server invoca el SQLDumper.exe para generar un archivo de volcado de memoria de su proceso. De forma predeterminada, el archivo de volcado de memoria se almacena en el directorio MSSQL\LOG\ de instancia de SQL.

Cómo cambiar la ruta de acceso predeterminada

Si, por ejemplo, el tamaño del archivo de volcado de memoria es demasiado grande, puede modificar la ruta de acceso haciendo lo siguiente:

  1. Abra Administrador de configuración de SQL Server.
  2. En servicios de SQL Server, busque la instancia de SQL Server que se está investigando.
  3. Haga clic con el botón derecho en esa entrada, seleccione Propiedades y, a continuación, vaya a la pestaña Opciones avanzadas .
  4. Cambie ese directorio de volcado a la ruta de acceso deseada y, a continuación, seleccione Aceptar.
  5. Reinicie SQL Server (cuando sea posible) para que la nueva configuración surta efecto.

Cuando la herramienta Sqldumper.exe se usa manualmente para generar un archivo de volcado de memoria para cualquier aplicación de Windows, el archivo de volcado podría ser tan grande como la memoria que la aplicación de Windows está usando actualmente. Asegúrese de que hay suficiente espacio en disco disponible en la unidad en la que Sqldumper.exe está escribiendo el archivo de volcado.

Especificar una carpeta de salida personalizada en el comando

Puede especificar el directorio donde desea que la herramienta de Sqldumper.exe escriba el archivo de volcado. El directorio ya debe existir antes de ejecutar Sqldumper.exe. De lo contrario, Sqldumper.exe producirá un error. No use una ruta de acceso UNC como ubicación para el archivo de volcado. A continuación se muestra un ejemplo de cómo especificar la ubicación del archivo de volcado de memoria del archivo de mini volcado:

  1. Seleccione Iniciar>ejecución, escriba cmd y, a continuación, seleccione Aceptar.

  2. En el símbolo del sistema, escriba el siguiente comando y presione Entrar:

    cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
    
  3. En el símbolo del sistema, escriba el siguiente comando y presione Entrar:

    Sqldumper.exe ProcessID 0 0x0128 0 <MdumpPath>
    

    Nota:

    <MdumpPath> es un marcador de posición del directorio donde desea que la herramienta de Sqldumper.exe escriba el archivo de volcado. De forma predeterminada, el archivo se escribe en la carpeta actual.

Si especifica un archivo de volcado completo o un archivo de volcado filtrado que se va a generar, Sqldumper.exe puede tardar varios minutos en generar el archivo de volcado. El tiempo que se tarda depende de las siguientes variables:

  • Cantidad de memoria que Sqlservr.exe está usando actualmente.
  • Velocidad de la unidad en la que la herramienta está escribiendo el archivo de volcado.

Durante este tiempo, la herramienta Sqldumper.exe no procesará comandos. Observará que el servidor ha dejado de responder. Además, puede producirse una conmutación por error de clúster.

Requisitos de permisos

Para ejecutar Sqldumper.exe, debe iniciar sesión en Windows mediante uno de los métodos siguientes:

  • Use una cuenta que sea miembro del grupo del administrador en el equipo.
  • Use la misma cuenta de usuario con la que se ejecuta el servicio SQL Server.

Para que la herramienta Sqldumper.exe funcione correctamente a través de Escritorio remoto o a través de Terminal Services, debe iniciar Escritorio remoto o Terminal Services en el modo de consola. Por ejemplo, para iniciar Escritorio remoto en el modo de consola, seleccione Iniciar>ejecución, escriba mstsc /console y, a continuación, seleccione Aceptar. Si el servidor de destino ejecuta Windows 2000, la opción /console se omite silenciosamente. Puede conectarse al servidor a través de Escritorio remoto, pero no usará la sesión de consola.

Si observa que no se ha generado ningún archivo de volcado en la carpeta actual después de ejecutar Sqldumper.exe, revise la información que la herramienta ha generado en la línea de comandos para intentar determinar la posible causa del error. Esta información también se registra en el archivo Sqldumper_errorlog.log del directorio actual. A continuación se muestran dos posibles mensajes de error y sus causas:

Mensaje Causa
"Error de OpenProcess 0x57: el parámetro es incorrecto" Se pasó un identificador de proceso no válido a la utilidad Sqldumper.exe.
"Valor no válido para el identificador de subproceso: <error de parámetro de parámetro> no válido" Se pasó un parámetro no válido a la utilidad Sqldumper.exe.

Si se genera un mensaje de error similar a uno de los siguientes, puede omitir este mensaje de forma segura:

  • "Tipo de devolución de llamada desconocido durante el minivolcado 6"
  • "Tipo de devolución de llamada desconocido durante el minivolcado 7"

Impacto de la generación de volcados de memoria

Cuando se solicita un archivo de volcado de memoria de un proceso en modo de usuario (como se describe en este artículo, en lugar de los volcados de kernel del sistema operativo, que están fuera de nuestro ámbito), el proceso de destino (aquí SQLServer.exe) se inmoviliza durante el tiempo necesario para serializar el contenido de volcado en su destino de archivo.

Inmovilizado significa que el proceso no podrá ejecutar ninguna solicitud de usuario ni ninguna operación interna, incluido cualquier mecanismo de sondeo de recursos, como la implementación de IsAlive y Looks Alive de La agrupación en clústeres de Windows (consulte la sección Volcados de memoria en conmutaciones por error de clúster para obtener más información sobre cómo controlar esa situación). Cualquier tiempo de espera que se base en la hora del reloj de pared también podría verse vulnerado debido a la inmovilización.

Como se puede derivar de la instrucción anterior, la duración de la inmovilización es, por tanto, el factor crítico aquí, y se basa en lo siguiente:

  • Tipo de volcado seleccionado.
  • Tamaño de SQL Server proceso en memoria, que en el caso de una sola instancia activa que ejecuta parámetros predeterminados suele estar cerca de la RAM física total del servidor.
  • Rendimiento del disco utilizado como destino para el volcado.

Además, se debe planear el tamaño del archivo de volcado en el disco, especialmente si varios volcados son una posibilidad y si se seleccionan tipos de volcado de memoria grandes y no predeterminados. Asegúrese de revisar los tipos de volcado de memoria para saber qué esperar. De forma predeterminada, algunos métodos de volcado de memoria crearán el volcado en la carpeta \Log de SQL Server Instancia, que, de forma predeterminada, la configuración simple también sería disco del sistema y disco de datos y registro para SQL Server. Llevar ese disco a la saturación tendrá un impacto grave en SQL Server o en la disponibilidad del sistema.

Administración del impacto en los sistemas en clúster

El proceso se suspende temporalmente durante la generación del volcado de memoria. Esto puede afectar a la disponibilidad del servicio SQL Server y desencadenar la conmutación por error de recursos en contextos de Always On (tanto la instancia del clúster de conmutación por error como el grupo de disponibilidad). La generación de volcado de memoria de distintos procesos afecta a los recursos de forma diferente. Lea detenidamente las secciones Impacto de la generación de volcados de memoria y Tipos de volcado de memoria .

Al capturar un volcado de SQL Server en una instancia en clúster de conmutación por error o en una instancia de grupo de disponibilidad (AG) de SQL Server, el SQL Server o el grupo de disponibilidad agrupados pueden conmutar por error a otro nodo si el volcado tarda demasiado tiempo en completarse. Esto puede ser especialmente problemático en sistemas que usan grandes cantidades de RAM o si está generando un volcado de memoria filtrado o completo. Para evitar la conmutación por error, use la siguiente configuración antes de capturar el archivo de volcado. El cambio se puede revertir después de realizar un archivo de volcado:

  • Para la instancia en clúster de conmutación por error (FCI):
    • Haga clic con el botón derecho en SQL Server recurso en Administrador de clústeres, seleccione Si se produce un error en el recurso, no se reinicie en la pestaña Directivas.
    • En la pestaña Propiedades , aumente el tiempo de espera de HealthCheck. Por ejemplo, establezca el valor de propiedad en 180 segundos o superior. Si se alcanza este tiempo de espera, se omitirá la directiva Si se produce un error en el recurso, no se reiniciará y el recurso se reiniciará de todos modos.
    • En la pestaña Propiedades , cambie el valor FailureConditionLevel a cero.
  • Para ag, aplique todas las opciones siguientes:
    • Aumente el tiempo de espera de sesión, por ejemplo, 120 segundos para todas las réplicas. En SQL Server Management Studio (SSMS), haga clic con el botón derecho en la réplica que se va a configurar y, a continuación, seleccione Propiedades. Cambie el campo Tiempo de espera de sesión (segundos) a 120 segundos. Para obtener más información, vea Cambiar el período de Session-Timeout para una réplica de disponibilidad (SQL Server).
    • Cambie la conmutación por error automática de todas las réplicas a conmutación por error manual. En SSMS, haga clic con el botón derecho en réplica, seleccione Propiedades y cambie la conmutación por error automática de todas las réplicas a conmutación por error manual en la pestaña Propiedades. Para obtener más información, vea Cambiar el modo de conmutación por error de una réplica de disponibilidad (SQL Server).
    • Aumente LeaseTimeout a 60 000 ms (60 segundos) y cambie HealthCheckTimeout a 90 000 ms (90 segundos). En Administrador de clústeres, haga clic con el botón derecho en Recurso de grupo de disponibilidad, seleccione Propiedades y, a continuación, cambie a la pestaña Propiedades para modificar ambas opciones. Para obtener más información, vea Configuración de la propiedad HealthCheckTimeout.

Mejoras del producto para reducir el impacto en SQL Server

Se han agregado cuatro mejoras importantes a las versiones recientes de SQL Server para reducir el tamaño del archivo de volcado o el tiempo para generar el volcado de memoria:

Mecanismo de filtrado de mapa de bits

SQL Server asigna un mapa de bits que realiza un seguimiento de las páginas de memoria que se van a excluir de un volcado filtrado. Sqldumper.exe lee el mapa de bits y filtra las páginas sin necesidad de leer ningún otro metadato del administrador de memoria. Verá los siguientes mensajes en el registro de errores de SQL Server cuando el mapa de bits esté habilitado o deshabilitado, respectivamente:

Page exclusion bitmap is enabled. y Page exclusion bitmap is disabled.

  • SQL Server 2016

    A partir de SQL Server 2016 SP2 CU13, el filtrado de mapa de bits está habilitado de forma predeterminada.

  • SQL Server 2017

    • Esto no está disponible en RTM a través de CU15.
    • En SQL Server 2017 CU16, puede habilitar el filtrado de mapa de bits a través de T8089 y deshabilitarlo desactivando T8089.
    • A partir de SQL Server 2017 CU20, el filtrado de mapa de bits está habilitado de forma predeterminada. La marca de seguimiento T8089 ya no se aplicará y se omitirá si está activada. El filtrado de mapa de bits se puede deshabilitar a través de T8095.
  • SQL Server 2019

    Esto está habilitado de forma predeterminada en SQL Server RTM de 2019. Se puede deshabilitar a través de T8095.

Eliminación de volcados repetidos en el mismo problema

Se eliminan los volcados de memoria repetidos en el mismo problema. Con una firma de pila, el motor de SQL realiza un seguimiento de si ya se ha producido una excepción y no generará un nuevo volcado de memoria si ya hay uno. Esto se aplica a las infracciones de acceso, el desbordamiento de pila, las aserciones y las excepciones de daños en el índice. Esto reduce significativamente la cantidad de espacio en disco que usan los volcados de memoria y no inmoviliza temporalmente el proceso para generar un volcado. Esto se agregó en SQL Server 2019.

Salida abreviada en el registro de errores

El contenido generado en el SQL Server registro de errores de un único volcado de memoria no solo puede ser abrumador, sino que también puede ralentizar el proceso de generación de un volcado de memoria debido al tiempo necesario para serializar toda esta información en un formato de texto en el registro de errores. En SQL Server 2019, el contenido almacenado en el registro de errores al generar el volcado se ha reducido considerablemente y puede tener este aspecto:

DateTimespidS pid    **Dump thread - spid = 0, EC = 0x0000015C7169BF40
DateTimespidS pid    *
DateTimespidS pid    *User initiated stack dump. This is not a server exception dump.
DateTimespidS pid    *
DateTimespidS pid    Stack Signature for the dump is 0x00000000788399E5
DateTimespidS pid    External dump process return code 0x20000001.
External dump process returned no errors.

Anteriormente SQL Server imprimiría información para cada sesión o subproceso cuando, por ejemplo, el usuario desencadenó un volcado manual.

Compresión paralela de volcados de memoria

Para generar volcados más rápido y reducir su tamaño, se introdujo una característica de volcado de memoria comprimido en SQL Server 2022 CU8 y SQL Server 2019 CU23. Cuando se activa, Sqldumper.exe crea varios subprocesos para leer la memoria de un proceso simultáneamente, la comprime y, a continuación, la guarda en el archivo de volcado. Esta compresión en paralelo multiproceso reduce el tamaño del archivo y acelera el proceso de volcado cuando se usa con volcados completos y filtrados.

Puede activar la marca de seguimiento 2610 para habilitar el volcado de memoria comprimido:

DBCC TRACEON (2610,-1)
GO
DBCC STACKDUMP with FILTERED_DUMP
GO
DBCC TRACEOFF (2610,-1)

Como alternativa, puede agregar -T2610 como parámetro de inicio a la instancia de SQL Server para que siempre cree volcados de memoria comprimidos.

Si ejecuta manualmente Sqldumper.exe, puede usar el -zdmp parámetro para capturar un volcado de memoria comprimido. Por ejemplo:

Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp

También puede limitar cuántos núcleos Sqldumper.exe puede usar para crear el volcado comprimido mediante el -cpu:X parámetro , donde X es el número de CPU. Este parámetro solo está disponible cuando ejecuta manualmente Sqldumper.exe desde la línea de comandos:

Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp -cpu:8

Factores que impiden o retrasan la creación de volcados de memoria

Se sabe que los siguientes factores provocan retrasos o impiden la creación de volcados de memoria.

  • La ruta de acceso de E/S en la que se escriben volcados de memoria tiene un rendimiento deficiente. En tales casos, para investigar y resolver el rendimiento de E/S de disco es el siguiente paso lógico.
  • Un antivirus u otro software de supervisión está interfiriendo con SQLDumper.exe. En algunos casos, la función ReadProcessMemory de desvío de software de terceros . Esto puede aumentar considerablemente la duración del volcado. Para resolver la mayoría de estos problemas, deshabilite el software que interfiere o agregue SQLDumper.exe a una lista de exclusión.

Tipos de volcado de memoria

Los métodos siguientes se pueden usar para generar tres tipos diferentes de volcados de memoria: mini volcados, volcados completos y volcados filtrados.

Volcados mínimos con memoria referenciada

Este tipo de volcado de memoria es una instantánea de todos los subprocesos activos del proceso ("pilas de subprocesos"), junto con un extracto limitado de la memoria a la que hacen referencia las pilas de subprocesos y otros datos de subproceso o proceso clave. Suelen tener un tamaño de unos pocos megabytes y son rápidos de generar (de menos de un segundo a un par de segundos). Los sistemas de servidor incluso más grandes (con cientos de CPU que impulsan indirectamente un número masivo de subprocesos en SQL Server proceso) rara vez superarán los 20-30 MB: el tamaño de un mini volcado no aumenta con el tamaño de SQL Server proceso. Este tipo de volcado de memoria es el tipo predeterminado que usa SQL Server al generar volcados de memoria automáticamente en excepciones, problemas del programador, problemas de bloqueo temporal, daños en la base de datos, aserciones.

Nota:

SQL Server, como parte de su instrumentación integrada, generará "mini volcados de diagnóstico" automatizados en algunas situaciones específicas. Por lo tanto, esta operación se considera lo suficientemente segura como para que SQL Server pueda desencadenarla automáticamente cuando sea necesario.

Volcados completos

Un volcado de memoria completo es una copia completa del espacio de proceso de destino activo. Por lo tanto, incluiría todo el estado del subproceso, toda la memoria asignada del proceso y todos los módulos cargados. Por lo tanto, los volcados completos tendrán un tamaño, que es aproximadamente el mismo de SQL Server proceso, que a su vez puede ser casi tan grande como la RAM total del sistema. En servidores grandes dedicados a una única instancia de SQL Server, esto podría significar un archivo, que es varios cientos de gigabytes o más. No hace falta decir que un archivo de este tipo tardará mucho tiempo en generarse y, por lo tanto, provocará una inmovilización prolongada. El rendimiento del disco para el destino de archivo del volcado influirá significativamente en el tiempo de congelación. Este tipo de volcado de memoria rara vez se usa para SQL Server hoy en día, como se describe en la explicación siguiente.

Volcados filtrados

A medida que aumenta constantemente el tamaño de RAM de los servidores típicos que ejecutan SQL Server, los volcados completos se vuelven más difíciles de manejar. Por lo tanto, se implementan volcados filtrados. Un volcado filtrado es un subconjunto de un volcado completo, donde grandes áreas de SQL Server memoria se excluyen sobre la marcha y no se escriben en el disco. Normalmente, la memoria excluida no aporta ningún valor añadido a la solución de problemas. Algunos ejemplos son las páginas de datos o índices y algunas memorias caché internas, como las páginas de datos de Hekaton y la memoria del grupo de registros. Este volcado filtrado da como resultado un archivo más pequeño que un volcado completo, pero el volcado conserva casi toda su utilidad. Los volcados filtrados han reemplazado los volcados completos como la opción preferida en una gran mayoría de situaciones en las que los mini volcados no son suficientes. La disminución del tamaño puede variar en comparación con un volcado completo, pero sigue siendo un archivo bastante grande, que suele ser entre el 30 y el 60 % del tamaño de SQL Server proceso. Por lo tanto, es mejor planear un tamaño posible tan grande como un volcado completo como una peor opción, lo que deja un buen margen de seguridad. Un volcado filtrado puede no ser necesariamente más rápido de generar que un volcado completo en todos los casos: se trata de si las ganancias relacionadas con el número de E/S evitadas superan el tiempo necesario para implementar la lógica de filtro (la velocidad del disco y la velocidad de CPU/RAM influirán en ello).

Puede usar la siguiente consulta para obtener una estimación aproximada del tamaño de volcado filtrado. Aunque la expectativa es que la mayoría de las páginas de datos o índices se excluyan del volcado de memoria, no se omitirán las que se bloquee y se modifiquen exclusivamente.

SELECT SUM(pages_kb)
FROM sys.dm_os_memory_clerks
WHERE type != 'MEMORYCLERK_SQLBUFFERPOOL'

Dado que puede usar Sqldumper.exe para generar un archivo de volcado a petición para cualquier aplicación de Microsoft Windows, puede considerar la posibilidad de usar la opción de volcado filtrado. Sin embargo, un archivo de volcado filtrado solo es aplicable y significativo en el contexto de SQL Server. Todavía puede generar un mini volcado, un archivo de volcado completo o aplicaciones que no sean SQL Server correctamente.

El proceso de SQL Server llama internamente a la herramienta Sqldumper.exe para generar un archivo de volcado cuando el proceso experimenta excepciones. SQL Server pasa parámetros a Sqldumper.exe. Puede usar marcas de seguimiento para cambiar los parámetros que SQL Server pasa a la herramienta de forma predeterminada cuando se produce una excepción o una aserción. Estas marcas de seguimiento están en el intervalo de 2540 a 2559. Puede usar una de estas marcas de seguimiento para cambiar el tipo de volcado predeterminado SQLDumper.exe generar (el valor predeterminado es un mini volcado con memoria referenciada). Por ejemplo:

  • Marca de seguimiento 2551: genera un volcado de memoria filtrado.
  • Marca de seguimiento 2544: genera un volcado de memoria completo.
  • Marca de seguimiento 8026: SQL Server borrará un desencadenador de volcado después de generar el volcado una vez.

Si hay dos o más marcas de seguimiento activas, se respetará la opción que indica el volcado de memoria más grande. Por ejemplo, si se usan marcas de seguimiento 2551 y 2544, SQL Server creará un volcado de memoria completo.

Generación de un volcado de memoria en conmutaciones por error de clúster

En escenarios de conmutación por error de clúster, el archivo DLL de recursos SQL Server puede obtener un archivo de volcado antes de que se produzca la conmutación por error para ayudar a solucionar problemas. Cuando el archivo DLL de recursos de SQL Server determina que se ha producido un error en un recurso de SQL Server, el archivo DLL del recurso SQL Server usa la utilidad Sqldumper.exe para obtener un archivo de volcado del proceso de SQL Server. Para asegurarse de que la herramienta Sqldumper.exe genera correctamente el archivo de volcado, debe establecer las tres propiedades siguientes como requisitos previos:

  • SqlDumperDumpTimeOut

    Tiempo de espera especificado por el usuario. El archivo DLL del recurso espera a que el archivo de volcado se complete antes de que el archivo DLL del recurso detenga el servicio SQL Server.

  • SqlDumperDumpPath

    Ubicación donde la herramienta Sqldumper.exe genera el archivo de volcado.

  • SqlDumperDumpFlags

    Marcas que Sqldumper.exe usa.

Si no se establece ninguna de las propiedades, Sqldumper.exe no puede generar el archivo de volcado. Se registrará un mensaje de advertencia tanto en el registro de eventos como en el registro del clúster cada vez que el recurso se ponga en línea.

Configuración del clúster para SQLDumper en SQL Server 2012 y versiones posteriores

Puede usar el ALTER SERVER CONFIGURATION comando (T-SQL) para modificar estas propiedades. Por ejemplo:

ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpTimeOut = 0;
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpPath = 'C:\temp\';
ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY SqlDumperDumpFlags = 296;

Como alternativa, puede usar scripts de PowerShell. Por ejemplo, para una instancia con nombre SQL2017AG:

Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpPath" -Value "C:\temp"
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpFlags" -Value 296
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpTimeOut" -Value 0

Para validar que se ha aplicado la configuración, puede ejecutar este comando de PowerShell:

Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Get-ClusterParameter

Configuración del clúster para SQLDumper en SQL Server 2008/2008 R2 o Windows 2012 y versiones anteriores

Para establecer las propiedades de la utilidad Sqldumper.exe para la conmutación por error del clúster mediante el comando de recursos de clúster , siga estos pasos:

  1. Seleccione Iniciar>ejecución, escriba cmd y, a continuación, seleccione Aceptar.
  2. Para cada propiedad, escriba el comando correspondiente en el símbolo del sistema y presione Entrar:
    • La propiedad SqlDumperDumpFlags.

      Para establecer la SqlDumperDumpFlags propiedad de un tipo específico de archivo de volcado, escriba el comando correspondiente en el símbolo del sistema y, a continuación, presione Entrar:

      • Todo el archivo de volcado de memoria completo del subproceso

        • Instancia predeterminada

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x01100
          
        • Instancia con nombre

          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x01100
          
      • Todo el archivo de mini volcado de subprocesos

        • Instancia predeterminada

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x0120
          
        • Instancia con nombre

          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x0120
          
      • Filtrado de todo el archivo de volcado de subprocesos

        • Instancia predeterminada

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x8100
          
        • Instancia con nombre

          cluster resource "SQL Server  (INSTANCE1)" /priv SqlDumperDumpFlags = 0x8100
          
    • La propiedad SqlDumperDumpPath.

      cluster resource "SQL Server" /priv SqlDumperDumpPath = <DirectoryPath>
      

      Nota:

      <DirectoryPath> es un marcador de posición para el directorio en el que se generará el archivo de volcado de memoria y debe especificarse entre comillas (" ").

    • La propiedad SqlDumperDumpTimeOut.

      cluster resource "SQL Server" /priv SqlDumperDumpTimeOut = <Timeout>
      

      Nota:

      <Timeout> es un marcador de posición para el tiempo de espera en milisegundos (ms).

El tiempo que tarda la herramienta en generar un archivo de volcado de memoria de un proceso de SQL Server depende de la configuración del equipo. Para un equipo que tiene muchos recuerdos, el tiempo podría ser significativo. Para obtener una estimación del tiempo que tarda el proceso, use la herramienta Sqldumper.exe para generar manualmente un archivo de volcado. Los valores válidos para la SqlDumperDumpTimeOut propiedad van de 10 000 ms a MAXDWORD. MAXDWORD representa el valor más alto del intervalo del tipo de datos DWORD (4294967295).

Para comprobar que la configuración se ha habilitado, puede ejecutar el siguiente comando:

cluster resource "SQL Server" /priv

Eliminación de propiedades de Sqldumper.exe para la conmutación por error del clúster

Para quitar las propiedades de la herramienta Sqldumper.exe para la conmutación por error del clúster, siga estos pasos:

  1. Seleccione Iniciar>ejecución, escriba cmd y, a continuación, seleccione Aceptar.
  2. Para una propiedad específica, escriba el comando correspondiente en el símbolo del sistema y presione Entrar:
    • La propiedad SqlDumperDumpFlags.

      • Instancia predeterminada

          cluster resource "SQL Server" /priv:SqlDumperDumpFlags /usedefault
        
      • Instancia con nombre

          cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpFlags /usedefault
        
    • La propiedad SqlDumperDumpPath.

      • Instancia predeterminada

        cluster resource "SQL Server" /priv:SqlDumperDumpPath /usedefault
        
      • Instancia con nombre

        cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpPath /usedefault
        
    • La propiedad SqlDumperDumpTimeOut.

      • Instancia predeterminada

        cluster resource "SQL Server" /priv:SqlDumperDumpTimeOut /usedefault
        
      • Instancia con nombre

        cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpTimeOut /usedefault
        

Uso de DBCC STACKDUMP

El DBCC STACKDUMP comando puede ayudarle a crear un volcado de memoria en el directorio LOG de la instalación de la instancia de SQL Server. El comando creará de forma predeterminada un minivolcado con todos los subprocesos, que tiene un tamaño limitado y es adecuado para reflejar el estado de SQL Server proceso. Ejecute el siguiente comando en un cliente de SQL Server:

DBCC STACKDUMP

Para obtener una funcionalidad extendida de DBCC STACKDUMP en SQL Server 2019, consulte Funcionalidad extendida de DBCC STACKDUMP introducida en SQL Server 2019.

Para habilitar este método para crear un volcado filtrado, active las marcas de seguimiento 2551 mediante el siguiente comando:

DBCC TRACEON(2551, -1)
GO
DBCC STACKDUMP

Para crear un volcado completo, use la marca de seguimiento 2544.

Después de obtener el archivo de volcado de memoria, debe deshabilitar la marca de seguimiento mediante el comando DBCC TRACEOFF (<TraceNumber>, -1); para evitar la actualización involuntaria de todos los minivolcados de autodiagnóstica SQL Server a volcados de memoria más grandes. En el comando, <TraceNumber> es la marca de seguimiento que ha habilitado anteriormente, como 2551 o 2544. Por ejemplo:

DBCC TRACEOFF(2551, -1)

En caso de que no esté seguro de qué marca de seguimiento permanece activa, ejecute el siguiente comando:

DBCC TRACESTATUS(-1)

Un conjunto de resultados vacío indica que no hay ninguna marca de seguimiento activa. Por el contrario, si 2551 sigue activo, verá lo siguiente:

TraceFlag Estado Global Sesión
2551 1 1 0

Nota:

Los traceflag habilitados por DBCC TRACEON se restablecen (quitan) después de reiniciar el servicio.

Funcionalidad de DBCC STACKDUMP extendida introducida en SQL Server 2019

A partir de SQL Server 2019 CU2, el comando se extendió para admitir la DBCC STACKDUMP generación de volcados de memoria de diferentes tipos: volcados mínimos, filtrados y completos. Este comando elimina la necesidad de usar marcas de seguimiento. También permite limitar la salida de texto en el otro archivo de texto que se genera con el volcado de memoria. Esto puede proporcionar una ganancia de rendimiento visible en el tiempo que se tarda SQLDumper.exe en generar un volcado de memoria.

DBCC STACKDUMP WITH MINI_DUMP | FILTERED_DUMP | FULL_DUMP [, TEXT_DUMP = LIMITED | DETAILED]

TEXT_DUMP = LIMITED es la opción predeterminada. Si desea recibir una salida detallada en el archivo SQLDump000X.txt , puede usar TEXT_DUMP = DETAILED.

Para generar un volcado filtrado con una salida limitada en el archivo .txt , ejecute el siguiente comando:

DBCC STACKDUMP WITH FILTERED_DUMP , TEXT_DUMP = LIMITED

Cómo usar un script de PowerShell para generar un archivo de volcado con SQLDumper

  • Guarde el código siguiente como un archivo PS1, por ejemplo ,SQLDumpHelper.ps1:

    Detalles del código

    $isInt = $false
    $isIntValDcnt = $false
    $isIntValDelay = $false
    $SqlPidInt = 0
    $NumFoler = ""
    $OneThruFour = ""
    $SqlDumpTypeSelection = ""
    $SSASDumpTypeSelection = ""
    $SSISDumpTypeSelection = ""
    $SQLNumfolder = 0
    $SQLDumperDir = ""
    $OutputFolder = ""
    $DumpType = "0x0120"
    $ValidPid
    $SharedFolderFound = $false
    $YesNo = ""
    $ProductNumber = ""
    $ProductStr = ""
    
    Write-Host ""
    Write-Host "`******************************************************************"
    Write-Host "This script helps you generate one or more SQL Server memory dumps"
    Write-Host "It presents you with choices on:`
                -target SQL Server process (if more than one)
                -type of memory dump
                -count and time interval (if multiple memory dumps)
    You can interrupt this script using CTRL+C"
    Write-Host "***********************************************************************"
    
    # check for administrator rights
    # debugging tools like SQLDumper.exe require Admin privileges to generate a memory dump
    
    if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
    {
        Write-Warning "Administrator rights are required to generate a memory dump!`nPlease re-run this script as an Administrator!"
        return
    }
    
    # what product would you like to generate a memory dump
    while ($true)
    {
        Write-Host "Which product would you like to generate a memory dump of?" -ForegroundColor Yellow
        Write-Host "1) SQL Server"
        Write-Host "2) SSAS (Analysis Services)"
        Write-Host "3) SSIS (Integration Services)"
        Write-Host "4) SSRS (Reporting Services)"
        Write-Host "5) SQL Server Agent"
        Write-Host ""
        $ProductNumber = Read-Host "Enter 1-5>"
    
        if ($ProductNumber -in 1,2,3,4,5)
        {
            break
        }
        Write-Host "`nPlease enter a valid number from list above!`n"
        Start-Sleep -Milliseconds 300
    }
    
    if ($ProductNumber -eq "1")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq sqlservr*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SQL Server"
    }
    elseif ($ProductNumber -eq "2")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq msmdsrv*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SSAS (Analysis Services)"
    }
    elseif ($ProductNumber -eq "3")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq msdtssrvr*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SSIS (Integration Services)"
    }
    elseif ($ProductNumber -eq "4")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq reportingservicesservice*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SSRS (Reporting Services)"
    }
    elseif ($ProductNumber -eq "5")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq sqlagent*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SQL Server Agent"
    }
    
    if ($SqlTaskList.Count -eq 0)
    {
        Write-Host "There are currently no running instances of $ProductStr. Exiting..." -ForegroundColor Green
        break
    }
    
    # if multiple SQL Server instances, get the user to input PID for desired SQL Server
    if ($SqlTaskList.Count -gt 1)
    {
        Write-Host "More than one $ProductStr instance found."
    
        $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host
    
        # check input and make sure it is a valid integer
        while ($true)
        {
            Write-Host "Please enter the PID for the desired SQL service from list above" -ForegroundColor Yellow
            $SqlPidStr = Read-Host ">"
    
            if( $SqlPidStr -in $SqlTaskList.PID)
            {
                $SqlPidInt = [int]$SqlPidStr
                break
            }
        }
    
        Write-Host "Using PID=$SqlPidInt for generating a $ProductStr memory dump" -ForegroundColor Green
        Write-Host ""
    
    }
    else # if only one SQL Server/SSAS on the box, go here
    {
        $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host
        $SqlPidInt = [convert]::ToInt32($SqlTaskList.PID)
    
        Write-Host "Using PID=", $SqlPidInt, " for generating a $ProductStr memory dump" -ForegroundColor Green
        Write-Host ""
    }
    
    # dump type
    
    if ($ProductNumber -eq "1")  # SQL Server memory dump
    {
        # ask what type of SQL Server memory dump
        while($true)
        {
            Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow
            Write-Host "1) Mini-dump"
            Write-Host "2) Mini-dump with referenced memory " -NoNewLine; Write-Host "(Recommended)"
            Write-Host "3) Filtered dump " -NoNewline; Write-Host "(Not Recommended)" -ForegroundColor Red
            Write-Host "4) Full dump  " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red
            Write-Host ""
            $SqlDumpTypeSelection = Read-Host "Enter 1-4>"
    
            if ($SqlDumpTypeSelection -in 1,2,3,4)
            {
                break
            }
            Write-Host "`nPlease enter a valid type of memory dump!`n"
            Start-Sleep -Milliseconds 300
        }
    
        Write-Host ""
    
        switch ($SqlDumpTypeSelection)
        {
            "1" { $DumpType="0x0120"; break }
            "2" { $DumpType="0x0128"; break }
            "3" { $DumpType="0x8100"; break }
            "4" { $DumpType="0x01100"; break }
            default { "0x0120"; break }
        }
    }
    elseif ($ProductNumber -eq "2")  # SSAS dump
    {
        # ask what type of SSAS memory dump
        while($true)
        {
            Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow
            Write-Host "1) Mini-dump"
            Write-Host "2) Full dump  " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red
            Write-Host ""
            $SSASDumpTypeSelection = Read-Host "Enter 1-2>"
    
            if ($SSASDumpTypeSelection -in 1,2)
            {
                break
            }
            Write-Host "`nPlease enter a valid type of memory dump!`n"
            Start-Sleep -Milliseconds 300
        }
    
        Write-Host ""
    
        switch ($SSASDumpTypeSelection)
        {
            "1" {$DumpType="0x0";break}
            "2" {$DumpType="0x34";break}
            default {"0x0120"; break}
        }
    }
    elseif ($ProductNumber -in 3,4,5)  # SSIS/SSRS/SQL Agent dump
    {
        # ask what type of SSIS memory dump
        while($true)
        {
            Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow
            Write-Host "1) Mini-dump"
            Write-Host "2) Full dump"
            Write-Host ""
            $SSISDumpTypeSelection = Read-Host "Enter 1-2>"
    
            if ($SSISDumpTypeSelection -in 1,2)
            {
                break
            }
            Write-Host "`nPlease enter a valid type of memory dump!`n"
            Start-Sleep -Milliseconds 300
        }
    
        Write-Host ""
    
        switch ($SSISDumpTypeSelection)
        {
            "1" { $DumpType="0x0"; break }
            "2" { $DumpType="0x34"; break }
            default { "0x0120"; break }
        }
    }
    
    # Sqldumper.exe PID 0 0x0128 0 c:\temp
    # output folder
    while($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder))
    {
        Write-Host ""
        Write-Host "Where would your like the memory dump stored (output folder)?" -ForegroundColor Yellow
        $OutputFolder = Read-Host "Enter an output folder with no quotes (e.g. C:\MyTempFolder or C:\My Folder)"
        if ($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder))
        {
            Write-Host "'" $OutputFolder "' is not a valid folder. Please, enter a valid folder location" -ForegroundColor Yellow
        }
    }
    
    # strip the last character of the Output folder if it is a backslash "\". Else Sqldumper.exe will fail
    if ($OutputFolder.Substring($OutputFolder.Length-1) -eq "\")
    {
        $OutputFolder = $OutputFolder.Substring(0, $OutputFolder.Length-1)
        Write-Host "Stripped the last '\' from output folder name. Now folder name is  $OutputFolder"
    }
    
    # find the highest version of SQLDumper.exe on the machine
    $NumFolder = dir "C:\Program Files\Microsoft SQL Server\1*" | Select-Object @{name = "DirNameInt"; expression={[int]($_.Name)}}, Name, Mode | Where-Object Mode -Match "da*" | Sort-Object DirNameInt -Descending
    
    for( $j=0; $j -lt $NumFolder.Count; $j++)
    {
        $SQLNumfolder = $NumFolder.DirNameInt[$j]   # start with the highest value from sorted folder names - latest version of dumper
        $SQLDumperDir = "C:\Program Files\Microsoft SQL Server\" + $SQLNumfolder.ToString() + "\Shared\"
        $TestPathDumperDir = $SQLDumperDir + "sqldumper.exe"
    
        if (Test-Path -Path $SQLDumperDir)
        {
            break
        }
    }
    
    # build the SQLDumper.exe command e.g. (Sqldumper.exe 1096 0 0x0128 0 c:\temp\)
    
    $cmd = "$([char]34)"+$SQLDumperDir + "sqldumper.exe$([char]34)"
    $arglist = $SqlPidInt.ToString() + " 0 " +$DumpType +" 0 $([char]34)" + $OutputFolder + "$([char]34)"
    Write-Host "Command for dump generation: ", $cmd, $arglist -ForegroundColor Green
    
    # do-we-want-multiple-dumps section
    Write-Host ""
    Write-Host "This utility can generate multiple memory dumps, at a certain interval"
    Write-Host "Would you like to collect multiple memory dumps (2 or more)?" -ForegroundColor Yellow
    
    # validate Y/N input
    while ($true)
    {
        $YesNo = Read-Host "Enter Y or N>"
    
        if ($YesNo -in "y","n")
        {
            break
        }
        Write-Host "Not a valid 'Y' or 'N' response"
    }
    
    # get input on how many dumps and at what interval
    if ($YesNo -eq "y")
    {
        [int]$DumpCountInt=0
        while (1 -ge $DumpCountInt)
        {
            Write-Host "How many dumps would you like to generate for this $ProductStr ?" -ForegroundColor Yellow
            $DumpCountStr = Read-Host ">"
    
            if ([int]::TryParse($DumpCountStr, [ref]$DumpCountInt) -and $DumpCountInt -gt 1)
            {
                break
            }
            Write-Host "Please enter a number greater than one." -ForegroundColor Red
        }
    
        [int]$DelayIntervalInt=0
        while ($true)
        {
            Write-Host "How frequently (in seconds) would you like to generate the memory dumps?" -ForegroundColor Yellow
            $DelayIntervalStr = Read-Host ">"
    
            if ([int]::TryParse($DelayIntervalStr, [ref]$DelayIntervalInt) -and $DelayIntervalInt -gt 0)
            {
                break
            }
            Write-Host "Please enter a number greater than zero." -ForegroundColor Red
        }
    
        Write-Host "Generating $DumpCountInt memory dumps at a $DelayIntervalStr-second interval" -ForegroundColor Green
    
        # loop to generate multiple dumps
        $cntr = 0
        while ($true)
        {
            Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist
            $cntr++
    
            Write-Host "Generated $cntr memory dump(s)." -ForegroundColor Green
    
            if ($cntr -ge $DumpCountInt)
            {
                break
            }
            Start-Sleep -S $DelayIntervalInt
        }
    
        # print what files exist in the output folder
        Write-Host ""
        Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green
        $MemoryDumps = $OutputFolder + "\SQLDmpr*"
        Get-ChildItem -Path $MemoryDumps
    
        Write-Host ""
        Write-Host "Process complete"
    }
    else # produce just a single dump
    {
        Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist
    
        # print what files exist in the output folder
        Write-Host ""
        Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green
        $MemoryDumps = $OutputFolder + "\SQLDmpr*"
        Get-ChildItem -Path $MemoryDumps
    
        Write-Host ""
        Write-Host "Process complete"
    }
    
    Write-Host "For errors and completion status, review SQLDUMPER_ERRORLOG.log created by SQLDumper.exe in the output folder '$OutputFolder'.`nOr if SQLDumper.exe failed, look in the folder from which you are running this script."
    
  • Ejecútelo desde el símbolo del sistema como administrador mediante el siguiente comando:

    Powershell.exe -File SQLDumpHelper.ps1
    
  • O ejecútelo desde Windows PowerShell consola y ejecútelo como administrador mediante el siguiente comando:

    .\SQLDumpHelper.ps1
    

Nota:

Si nunca ha ejecutado scripts de PowerShell en el sistema, es posible que reciba el siguiente mensaje de error:

"El archivo ...SQLDumpHelper.ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema".

Para habilitar la capacidad de ejecutar los comandos, siga estos pasos:

  1. Inicie Windows PowerShell consola mediante la opción Ejecutar como administrador. Solo los miembros del grupo de administradores del equipo pueden cambiar la directiva de ejecución.

  2. Habilite la ejecución de scripts sin firmar mediante el siguiente comando:

    Set-ExecutionPolicy RemoteSigned
    

    Nota:

    Esto le permitirá ejecutar scripts sin firmar que cree en el equipo local y scripts firmados desde Internet.