Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
La utilidad sqlmaint realiza un conjunto especificado de operaciones de mantenimiento en una o varias bases de datos. Use sqlmaint para ejecutar DBCC comprobaciones, realizar copias de seguridad de una base de datos y su registro de transacciones, actualizar estadísticas y recompilar índices. Todas las actividades de mantenimiento de la base de datos generan un informe que puede enviar a un archivo de texto designado, un archivo HTML o una cuenta de correo electrónico.
sqlmaint ejecuta planes de mantenimiento de base de datos creados en versiones anteriores de SQL Server. Para ejecutar los planes de mantenimiento de SQL Server desde el símbolo del sistema, emplee la utilidad dtexec.
Importante
Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Use la característica plan de mantenimiento de SQL Server en su lugar. Para obtener más información sobre los planes de mantenimiento, consulte Planes de mantenimiento.
Sintaxis
sqlmaint
[ -? ] |
[
[ -S server_name [ \instance_name ] ]
[ -U login_ID [ -P password ] ]
{
[ -D database_name | -PlanName name | -PlanID guid ]
[ -Rpt text_file ]
[ -To operator_name ]
[ -HtmlRpt html_file [ -DelHtmlRpt <time_period> ] ]
[ -RmUnusedSpace threshold_percentfree_percent ]
[ -CkDB | -CkDBNoIdx ]
[ -CkAl | -CkAlNoIdx ]
[ -CkCat ]
[ -UpdOptiStats sample_percent ]
[ -RebldIdx free_space ]
[ -SupportComputedColumn ]
[ -WriteHistory ]
[
{ -BkUpDB [ backup_path ] | -BkUpLog [ backup_path ] }
{ -BkUpMedia
{ DISK [
[ -DelBkUps <time_period> ]
[ -CrBkSubDir ]
[ -UseDefDir ]
]
| TAPE
}
}
[ -BkUpOnlyIfClean ]
[ -VrfyBackup ]
]
}
]
<time_period> ::=
number [ minutes | hours | days | weeks | months ]
Argumentos
Separe los parámetros y sus valores con un espacio. Por ejemplo, incluya un espacio entre -S y server_name.
-?
Devuelve el diagrama de sintaxis de sqlmaint. Use este parámetro por sí mismo.
-S server_name[\instance_name]
Especifica la instancia de destino de SQL Server. Especifique <server_name> para conectarse a la instancia predeterminada del motor de base de datos de SQL Server en ese servidor. Especifique <server_name>\<instance_name> para conectarse a una instancia con nombre del motor de base de datos en ese servidor. Si no especifica un servidor, sqlmaint se conecta a la instancia predeterminada del motor de base de datos en el equipo local.
-U login_ID
Especifica la cuenta que se va a usar al conectarse al servidor. Si no proporciona este parámetro, sqlmaint intenta usar la autenticación de Windows. Si login_ID contiene caracteres especiales, escríbalo entre comillas dobles ("); de lo contrario, las comillas dobles son opcionales.
Importante
Siempre que sea posible, utilice la autenticación de Windows.
-P password
Especifica la contraseña del login_ID. Este parámetro solo es válido si también se proporciona el -U parámetro . Si la contraseña contiene caracteres especiales, escríbalo entre comillas dobles; De lo contrario, las comillas dobles son opcionales.
Importante
La contraseña no está enmascarada. Siempre que sea posible, utilice la autenticación de Windows.
-D database_name
Especifica el nombre de la base de datos en que se va a realizar la operación de mantenimiento. Si database_name contiene caracteres especiales, escríbalo entre comillas dobles; De lo contrario, las comillas dobles son opcionales.
-PlanName name
Especifica el nombre de un plan de mantenimiento de base de datos definido mediante el Asistente para planes de mantenimiento de bases de datos. La única información que sqlmaint usa del plan es la lista de bases de datos del plan. Todas las actividades de mantenimiento que se especifiquen en los demás parámetros de sqlmaint se aplicarán a esta lista de bases de datos.
-PlanID guid
Especifica el identificador exclusivo global (GUID) de un plan de mantenimiento de base de datos definido mediante el Asistente para planes de mantenimiento de bases de datos. La única información que usa sqlmaint es la lista de bases de datos del plan. Todas las actividades de mantenimiento que se especifiquen en los demás parámetros de sqlmaint se aplicarán a esta lista de bases de datos. Este valor debe coincidir con un plan_id valor en msdb.dbo.sysdbmaintplans.
-Rpt text_file
Especifica la ruta de acceso completa y el nombre de archivo del informe generado. También se genera el informe en la pantalla. El informe mantiene información de las versiones al agregar una fecha al nombre de archivo. La fecha se genera de la siguiente manera, al final del nombre de archivo, pero antes del punto, con el formato _<yyyyMMddhhmm>.
<yyyy> = year, <MM> = month, <dd> = day, <hh> = hour, <mm> = minute.
Si ejecuta el programa a las 10:23 a.m. del 1 de diciembre de 1996, el valor de text_file es el siguiente:
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.rpt
El nombre del archivo generado será:
C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint_199612011023.rpt
Se requiere el nombre de archivo UNC (Convención de nomenclatura universal) para text_file cuando sqlmaint tiene acceso a un servidor remoto.
-To operator_name
Especifica el operador al que se envía el informe generado a través de SQL Mail.
-HtmlRpt html_file
Especifica la ruta de acceso completa y el nombre del archivo en el que se genera un informe HTML.
sqlmaint genera el nombre de archivo anexando una cadena del formato _<yyyyMMddhhmm> al nombre de archivo, igual que para el -Rpt parámetro .
Se requiere el nombre UNC completo del archivo para html_file cuando sqlmaint tiene acceso a un servidor remoto.
-DelHtmlRpt <time_period>
Elimina cualquier informe HTML en el directorio del informe si el intervalo de tiempo después de la creación del archivo de informe supera time_period.
-DelHtmlRpt busca archivos cuyo nombre se ajuste al patrón generado a partir del parámetro html_file . Si html_file es C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint.htm, -DelHtmlRpthace que sqlmaint elimine los archivos cuyos nombres coincidan con el patrón C:\Program Files\Microsoft SQL Server\MSSQL\Backup\AdventureWorks2022_maint*.htm y que sean anteriores al time_period especificado.
-RmUnusedSpace threshold_percent free_percent
Especifica que el espacio no utilizado se quita de la base de datos especificada en -D. Esta opción solo resulta útil para aquellas bases de datos definidas para crecer automáticamente.
Threshold_percent especifica en megabytes el tamaño que debe alcanzar la base de datos antes de que sqlmaint intente quitar el espacio de datos no usado. Si la base de datos es menor que el valor de threshold_percent, no se realiza ninguna acción.
Free_percent especifica la cantidad de espacio no usado que debe conservarse en la base de datos, especificado como porcentaje del tamaño final de la base de datos.
Por ejemplo, si una base de datos de 200 MB contiene 100 MB de datos y se especifica el valor 10 para free_percent , el tamaño final de la base de datos será de 110 MB. Una base de datos no se expande si es menor que free_percent más la cantidad de datos de la base de datos. Por ejemplo, si una base de datos de 108 MB tiene 100 MB de datos, especificando 10 para free_percent no expande la base de datos a 110 MB; permanece a 108 MB.
-CkDB | -CkDBNoIdx
Especifica que una instrucción DBCC CHECKDB , o una DBCC CHECKDB instrucción con la NOINDEX opción , se ejecuta en la base de datos especificada en -D.
sqlmaint escribe una advertencia en text_file si la base de datos está en uso cuando se ejecuta.
-CkAl | -CkAlNoIdx
Especifica que una instrucción DBCC CHECKALLOC con la NOINDEX opción se ejecuta en la base de datos especificada en -D.
-CkCat
Especifica que una instrucción DBCC CHECKCATALOG se ejecuta en la base de datos especificada en -D.
-UpdOptiStats sample_percent
Especifica que la siguiente instrucción se ejecuta en cada tabla de la base de datos:
UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT;
Si las tablas contienen columnas calculadas, también debe especificar el -SupportedComputedColumn argumento al usar -UpdOptiStats.
Para más información, consulta ACTUALIZAR ESTADÍSTICAS.
-RebldIdx free_space
Especifica que se deben volver a generar los índices de las tablas de la base de datos de destino mediante el valor porcentual de free_space en proporción inversa al factor de relleno. Por ejemplo, si el porcentaje de free_space es 30, el factor de relleno empleado será 70. Si se especifica un valor de porcentaje de free_space de 100, los índices se vuelven a generar con el valor del factor de relleno original.
Si los índices están en columnas calculadas, también debe especificar el -SupportComputedColumn argumento al usar -RebldIdx.
-ColumnaCalculadaSoportada
Debe especificarse para ejecutar DBCC comandos de mantenimiento con sqlmaint en columnas calculadas.
-WriteHistory
Especifica que se realiza una entrada en msdb.dbo.sysdbmaintplan_history para cada acción de mantenimiento realizada por sqlmaint. Si -PlanName se especifica o -PlanID , las entradas de sysdbmaintplan_history usan el identificador del plan especificado. Si -D se especifica , las entradas de sysdbmaintplan_history se realizan con ceros para el identificador de plan.
-BkUpDB [ backup_path ] | -BkUpLog [ backup_path ]
Especifica una operación de copia de seguridad.
-BkUpDb realiza una copia de seguridad de toda la base de datos.
-BkUpLog realiza una copia de seguridad solo del registro de transacciones.
backup_path especifica el directorio de la copia de seguridad.
backup_path no es necesario si -UseDefDir también se especifica e -UseDefDir invalida backup_path si se especifican ambos. La copia de seguridad se puede colocar en un directorio o en una dirección de dispositivo de cinta (por ejemplo, \\.\TAPE0). El nombre de archivo de una copia de seguridad de base de datos se genera automáticamente del modo siguiente:
dbname_db_yyyyMMddhhmm.BAK
Where:
-
<dbname>es el nombre de la base de datos de la que se realiza la copia de seguridad. -
<yyyyMMddhhmm>es la hora de la operación de copia de seguridad con<yyyy>= año,<MM>= mes,<dd>= día,<hh>hora y<mm>= minuto.
El nombre del archivo para una copia de seguridad de transacciones se genera automáticamente con un formato similar:
dbname_log_yyyymmddhhmm.BAK
Si usa el -BkUpDB parámetro , también debe especificar el medio mediante el -BkUpMedia parámetro .
-BkUpMedia
Especifica el tipo de medio de la copia de seguridad, ya sea DISK o TAPE.
DISK
Especifica que el medio de la copia de seguridad es un disco.
-DelBkUps <time_period>
En el caso de las copias de seguridad de disco, especifica que cualquier archivo de copia de seguridad del directorio de copia de seguridad se elimine si el intervalo de tiempo después de la creación de la copia de seguridad supera el time_period.
-CrBkSubDir
En el caso de las copias de seguridad de disco, especifica que se crea un subdirectorio en el directorio backup_path o en el directorio de copia de seguridad predeterminado si -UseDefDir también se especifica. El nombre del subdirectorio se genera a partir del nombre de base de datos especificado en -D.
-CrBkSubDir ofrece una manera sencilla de colocar todas las copias de seguridad de diferentes bases de datos en subdirectorios independientes sin tener que cambiar el parámetro backup_path .
-UseDefDir
Para copias de seguridad en disco, especifica que se cree el archivo de copia de seguridad en el directorio de copia de seguridad predeterminado.
UseDefDir invalida backup_path si se especifican ambos. Con una configuración predeterminada de SQL Server, el directorio de copia de seguridad predeterminado es C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.
CINTA
Especifica que el medio de copia de seguridad es una cinta.
-RespaldoSoloSiEstáLimpio
Especifica que la copia de seguridad solo se produce si las comprobaciones especificadas -Ck no encuentran problemas con los datos. Las acciones de mantenimiento se ejecutan en la misma secuencia en que aparecen en la solicitud de comandos. Especifique los parámetros -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl, o -CkCat antes de los parámetros -BkUpDB o -BkUpLog si también va a especificar -BkUpOnlyIfClean. Si no especifica estos parámetros, se realizará la copia de seguridad independientemente de si la comprobación notifica problemas o no.
-VrfyBackup
Especifica que RESTORE VERIFYONLY se ejecuta en la copia de seguridad cuando se completa.
number [ minutos| horas| día| semanas| meses ]
Especifica el intervalo de tiempo que se utiliza para determinar si un informe o un archivo de copia de seguridad son suficientemente antiguos para poder eliminarlos. number es un número entero seguido (sin espacio) de una unidad de tiempo. Ejemplos válidos:
12weeks3months15days
Si especifica solo el número, la parte de fecha predeterminada es weeks.
Observaciones
La utilidad sqlmaint realiza operaciones de mantenimiento en una o varias bases de datos. Si especifica -D, la utilidad realiza las operaciones especificadas en los conmutadores restantes solo en la base de datos especificada. Si especifica -PlanName o -PlanID, la única información que sqlmaint recupera del plan de mantenimiento especificado es la lista de bases de datos del plan. Todas las operaciones especificadas en los parámetros sqlmaint restantes se aplican en cada base de datos de la lista obtenida del plan. La utilidad sqlmaint no aplica ninguna de las actividades de mantenimiento definidas en el propio plan.
La utilidad sqlmaint devuelve 0 si se ejecuta correctamente o 1 si se produce algún error. Se notifica un error si:
Se produce un error en cualquiera de las acciones de mantenimiento.
Los controles
-CkDB,-CkDBNoIdx,-CkAl,-CkAlNoIdx,-CkTxtAlo-CkCatbuscan problemas con los datos.Se produce un error general.
Permisos
Cualquier usuario de Windows con permiso De lectura y ejecución en sqlmaint.exe puede ejecutar la utilidad sqlmaint . De forma predeterminada, sqlmaint.exe se almacena en la <X>:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER1\MSSQL\Binn carpeta . Además, el inicio de sesión de SQL Server que especifique con -login_ID debe tener los permisos de SQL Server necesarios para realizar la acción especificada. Si usa la autenticación de Windows para conectarse a SQL Server, el inicio de sesión de SQL Server asignado al usuario autenticado de Windows debe tener los permisos de SQL Server necesarios para realizar la acción especificada.
Por ejemplo, el uso de -BkUpDB requiere permiso para ejecutar la BACKUP instrucción . Además, el uso del -UpdOptiStats argumento requiere permiso para ejecutar la UPDATE STATISTICS instrucción . Para obtener más información, vea Permisos (motor de base de datos).
Ejemplos
Un. Realización de comprobaciones de DBCC en una base de datos
En este ejemplo se ejecutan DBCC comprobaciones en una base de datos.
sqlmaint -S MyServer -D AdventureWorks2022 -CkDB -CkAl -CkCat -Rpt C:\MyReports\AdvWks_chk.rpt
B. Actualizar estadísticas
En este ejemplo se actualizan las estadísticas utilizando una muestra del 15% en todas las bases de datos dentro de un plan. Cualquier base de datos que alcance 110 MB se reduce para tener solo 10% espacio libre.
sqlmaint -S MyServer -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10
C. Copia de seguridad de todas las bases de datos
En este ejemplo se realiza una copia de seguridad de todas las bases de datos de un plan en sus subdirectorios individuales mediante el directorio predeterminado <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup . También elimina las copias de seguridad anteriores a dos semanas.
sqlmaint -S MyServer -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks
D. Realizar una copia de seguridad de una base de datos
En este ejemplo se realiza una copia de seguridad de una base de datos única en el directorio predeterminado <X>:\Program Files\Microsoft SQL Server\MSSQLl13.MSSQLSERVER\MSSQL\Backup .
sqlmaint -S MyServer -BkUpDB -BkUpMedia DISK -UseDefDir