Ver Mensaje Individual
  #9 (permalink)  
Antiguo 23/05/2003, 08:59
jjlallana
 
Fecha de Ingreso: enero-2002
Ubicación: Zaragoza
Mensajes: 144
Antigüedad: 22 años, 3 meses
Puntos: 0
Esta información de la ayuda de SQL server, creo que te aclarará un poco las cosas:

Programa sqlmaint
El programa sqlmaint realiza un conjunto especificado de operaciones de mantenimiento en una o varias bases de datos. Utilice sqlmaint para ejecutar comprobaciones de DBCC, realizar una copia de seguridad de una base de datos y su registro de transacciones, actualizar estadísticas y volver a generar índices. Todas las actividades de mantenimiento de la base de datos generan un informe que se puede enviar a un archivo de texto, un archivo HTML o una cuenta de correo electrónico que se designe.

Sintaxis
sqlmaint
[-?] |
[
[-S servidor]
[-U IdInicioSesión [-P contraseña]]
{
[ -D nombreBaseDatos | -PlanName nombre | -PlanID GUID ]
[-Rpt archivoTexto [-DelTxtRpt <período>] ]
[-To nombreOperador]
[-HtmlRpt archivoHtml [-DelHtmlRpt <período>] ]
[-RmUnusedSpace porcentajeUmbral porcentajeLibre]
[-CkDB | -CkDBNoIdx]
[-CkAl | -CkAlNoIdx]
[-CkTxtAl]
[-CkCat]
[-UpdSts]
[-UpdOptiStats porcentajeMuestra]
[-RebldIdx espacioLibre]
[-WriteHistory]
[
{-BkUpDB [rutaCopiaSeguridad] | -BkUpLog [rutaCopiaSeguridad] }
{-BkUpMedia
{DISK [ [-DelBkUps <período>]
[-CrBkSubDir ] [ -UseDefDir ]
]
| TAPE
}
}
[-BkUpOnlyIfClean]
[-VrfyBackup]
]
}
]

<período> ::=
número[minutes | hours | days | weeks | months]


--------------------------------------------------------------------------------

Nota Los parámetros y sus valores deben estar separados por un espacio. Por ejemplo, debe haber un espacio entre -S y servidor.


--------------------------------------------------------------------------------

Argumentos
-?
Especifica que se devuelva el diagrama de sintaxis para sqlmaint. Este parámetro debe utilizarse solo.
-S servidor
Especifica el servidor de destino. Si no se especifica, se asume que Microsoft® SQL Server™ se encuentra en el equipo local. La versión de SQL Server no puede ser la 6.5 ni anterior. Utilice la versión 6.5 de sqlmaint para las versiones anteriores de SQL Server.
-U IdInicioSesión
Especifica el Id. de inicio de sesión que va a utilizarse para conectar al servidor. Si no se especifica, sqlmaint intenta utilizar la Autenticación de Windows NT. Si IdInicioSesión contiene caracteres especiales, debe incluirse entre dobles comillas (“); de lo contrario, las dobles comillas son opcionales.
-P contraseña
Especifica la contraseña para el Id. de inicio de sesión. Sólo tiene validez si también se especifica el parámetro -U. Si contraseña contiene caracteres especiales, deberá incluirse entre dobles comillas; de lo contrario, las dobles comillas son opcionales.
-D nombreBaseDatos
Especifica el nombre de la base de datos en que se va a realizar la operación de mantenimiento. Si nombreBaseDatos contiene caracteres especiales, deberá incluirse entre dobles comillas; de lo contrario, las dobles comillas son opcionales.
-PlanName nombre
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 del plan que sqlmaint utiliza es la lista de las bases de datos. 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. Puede obtener el nombre del plan en el Administrador corporativo de SQL Server.
-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 del plan que sqlmaint utiliza es la lista de las bases de datos. 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. Debe coincidir con un valor de plan_id en msdb.dbo.sysdbmaintplans.
-Rpt archivoTexto
Especifica la ruta de acceso completa y el nombre del archivo en que se va a generar el informe. También se genera el informe en la pantalla. El informe mantiene información de la versión al agregar la fecha al nombre de archivo. La fecha se genera del modo siguiente: al final del nombre del archivo, pero antes del punto, en la forma _aaaaMMddhhm. Aaaa = año, MM = mes, dd = día, hh = hora, mm = minuto.
Si ejecuta el programa a las 10:23 a.m. del 1 de diciembre de 1996 y éste es el valor de archivoTexto:

c:\mssql7\backup\Nwind_maint.rpt



el nombre del archivo generado será:

c:\mssql7\backup\Nwind_maint_199612011023.rpt


Se requiere el nombre UNC completo del archivo para archivoTexto cuando sqlmaint tiene acceso a un servidor remoto.

-DelTxtRpt <período>
Especifica que debe eliminarse cualquier informe de texto del directorio de informes si el intervalo posterior a la creación del archivo de informe supera el <período>.
-DelTextRpt busca archivos cuyo nombre se ajuste al patrón generado a partir del parámetro archivoTexto. Si archivoTexto es C:\Mssql7\Backup\Nwind_maint.rpt, entonces -DelTxtRpt causará que sqlmaint elimine todos los archivos cuyos nombres coincidan con el patrón C:\Mssql7\Backup\Nwind_maint*.rpt y que sean más antiguos que el <período> especificado.

-To nombreOperador
Especifica el operador al que se enviará el informe generado a través de SQL Mail. Es posible definir el operador mediante el Administrador corporativo de SQL Server.
-HtmlRpt archivoHtml
Especifica la ruta de acceso completa y el nombre del archivo en el que se va a generar el informe HTML. sqlmaint genera el nombre del archivo al incluir una cadena con el formato _aaaaMMddhhmm en el nombre de archivo, al igual que con el parámetro -Rpt.
Se requiere el nombre UNC completo del archivo para archivoHtml cuando sqlmaint tiene acceso a un servidor remoto.

-DelHtmlRpt <período>
Especifica que debe eliminarse cualquier informe HTML del directorio de informes si el intervalo posterior a la creación del archivo de informe supera el <período>.
-DelHtmlRpt busca archivos cuyo nombre se ajuste al patrón generado a partir del parámetro archivoHtml. Si archivoHtml es C:\Mssql7\Backup\Nwind_maint.htm, entonces -DelHtmlRpt causará que sqlmaint elimine todos los archivos cuyos nombres coincidan con el patrón C:\Mssql7\Backup\Nwind_maint*.htm y que sean más antiguos que el <período> especificado.

-RmUnusedSpace porcentajeUmbral porcentajeLibre
Indica que se quite el espacio no utilizado de la base de datos especificada en -D. Esta opción sólo es útil con las bases de datos definidas de manera que puedan crecer automáticamente. porcentajeUmbral especifica el tamaño en megabytes que debe alcanzar la base de datos antes de que sqlmaint intente quitar el espacio de datos no utilizado. Si la base de datos es más pequeña que porcentajeUmbral, no se lleva a cabo ninguna acción. porcentajeLibre especifica cuánto espacio no utilizado debe quedar en la base de datos; se indica como un 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 porcentajeLibre, el tamaño final de la base de datos será de 110 MB. La base de datos no se ampliará si ocupa menos espacio que la suma de porcentajeLibre más el espacio ocupado por los datos de la base de datos. Por ejemplo, si una base de datos de 108 MB tiene 100 MB de datos y se especifica 10 para porcentajeLibre, no se ampliará la base de datos a 110 MB; se mantendrá con un espacio de 108 MB.
-CkDB | -CkDBNoIdx
Especifica que se ejecute una instrucción DBCC CHECKDB o una instrucción DBCC CHECKDB con la opción NOINDEX en la base de datos especificada en -D. Para obtener más información, consulte DBCC CHECKDB. Se escribe una advertencia en archivoTexto si la base de datos se está utilizando cuando se ejecuta sqlmaint.
-CkAl | -CkAlNoIdx
Especifica que se ejecute una instrucción DBCC NEWALLOC o una instrucción DBCC NEWALLOC con la opción NOINDEX en la base de datos especificada en -D. Para obtener más información, consulte DBCC NEWALLOC. -CkTxtAl
Especifica que se ejecute una instrucción DBCC TEXTALL en la base de datos especificada en -D. Para obtener más información, consulte DBCC TEXTALL. -CkCat

Especifica que se ejecute una instrucción DBCC CHECKCATALOG en la base de datos especificada en -D. Para obtener más información, consulte DBCC CHECKCATALOG. -UpdSts

Especifica que se ejecute la instrucción siguiente en cada una de las tablas de la base de datos:

UPDATE STATISTICS table



Para obtener más información, consulte. UPDATE STATISTICS. -UpdOptiStats porcentajeMuestra

Especifica que se ejecute la instrucción siguiente en cada una de las tablas de la base de datos:

UPDATE STATISTICS table WITH SAMPLE sample_percent PERCENT



Para obtener más información, consulte. UPDATE STATISTICS. -RebldIdx espacioLibre

Especifica que se deben volver a generar los índices de las tablas de la base de datos de destino mediante el valor porcentual de espacioLibre en proporción inversa al factor de relleno. Por ejemplo, si el porcentaje de espacioLibre es 30, el factor de relleno utilizado será 70. Si se especifica un valor de 100 como porcentaje de espacioLibre, se volverán a generar los índices con el valor de factor de relleno original.

-WriteHistory
Especifica que se escriba una entrada en msdb.dbo.sysdbmaintplan_history para cada acción de mantenimiento realizada por sqlmaint. Si se especifica -PlanName o -PlanID, las entradas de sysdbmaintplan_history utilizan el Id. de plan especificado. Si se especifica -D, las entradas de sysdbmaintplan_history para el Id. de plan estarán compuestas de ceros.
-BkUpDB [rutaCopiaSeguridad] | -BkUpLog [rutaCopiaSeguridad]
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 del registro de transacciones únicamente.
[rutaCopiaSeguridad] especifica el directorio para la copia de seguridad. [rutaCopiaSeguridad] no se necesita si también se especifica -UseDefDir, y se suplanta con -UseDefDir si se especifican los dos parámetros. 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



donde

nombreBD es el nombre de la base de datos de la que se realiza una copia de seguridad.
aaaaMMddhhmm es el tiempo que dura la operación de copia de seguridad, donde aaaa = 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 utiliza el parámetro -BkUpDB, también deberá especificar el medio con el parámetro -BkUpMedia.

-BkUpMedia
Especifica el tipo de medio para la copia de seguridad.
DISK
Especifica que el medio de la copia de seguridad es un disco.
-DelBkUps <período>
Especifica que deben eliminarse todos los archivos de copia de seguridad del directorio de copia de seguridad si el intervalo posterior a la creación de la copia de seguridad supera el <período>.
-CrBkSubDir
Indica que se cree un subdirectorio en el directorio [rutaCopiaSeguridad] o en el directorio de copia de seguridad predeterminado si también se especifica -UseDefDir. El nombre del subdirectorio se genera a partir del nombre de la base de datos especificado en -D. -CrBkSubDir ofrece un método sencillo para colocar todas las copias de seguridad de bases de datos distintas en subdirectorios independientes sin necesidad de cambiar el parámetro [rutaCopiaSeguridad].
-UseDefDir
Indica que se cree el archivo de copia de seguridad en el directorio de copia de seguridad predeterminado. UseDefDir suplanta a [rutaCopiaSeguridad] si se especifican ambos parámetros. Con una instalación predeterminada de SQL Server, el directorio predeterminado de copia de seguridad es C:\Mssql7\Backup.
TAPE
Especifica que el medio de copia de seguridad es una cinta.
-BkUpOnlyIfClean
Indica que sólo se realice la copia de seguridad si las comprobaciones -Ck especificadas no han detectado problemas en los datos. Las acciones de mantenimiento se ejecutan en la misma secuencia en que aparecen en el símbolo del sistema. Especifique los parámetros -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl o -CkCat antes del parámetro o de los parámetros -BkUpDB/-BkUpLog si también va a especificar -BkUpOnlyIfClean o si la copia de seguridad se realizará independientemente de que la comprobación informe o no de que han surgido problemas.
-VrfyBackup
Especifica que sólo se ejecute RESTORE VERIFYONLY en la copia de seguridad cuando finalice.
número[minutes | hours | days | weeks | months]
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. número es un número entero; por ejemplo, 12weeks (12 semanas), 3months (3 meses) o 15days (15 días). Si sólo se especifica número, la parte de fecha predeterminada es weeks (semanas).
Observaciones
sqlmaint realiza operaciones de mantenimiento en una o varias bases de datos. Si se especifica -D, las operaciones especificadas en los restantes modificadores sólo se realizan en la base de datos indicada. Si se especifica -PlanName o -PlanID, la única información que sqlmaint recupera del plan de mantenimiento indicado es la lista de bases de datos. Todas las operaciones especificadas en los parámetros sqlmaint restantes se aplican a cada base de datos de la lista obtenida a partir del plan. sqlmaint no aplica ninguna de las actividades de mantenimiento definidas en el propio plan.

El programa sqlmaint es una aplicación SQL-DMO, por lo que es necesario registrar SQL-DMO en el equipo en que desee ejecutar sqlmaint. Si SQL Server o el Administrador corporativo de SQL Server están instalados en el equipo, SQL-DMO ya estará registrado.

Para registrar SQL-DMO, escriba lo siguiente en el símbolo del sistema:

regsvr32 c:\mssql7\binn\sqldmo.enu



El programa sqlmaint devuelve 0 si se ejecuta correctamente o devuelve 1 si falla. Se informa del error:

Si falla alguna de las operaciones de mantenimiento.
Si las comprobaciones -CkDB, -CkDBNoIdx, -CkAl, -CkAlNoIdx, -CkTxtAl o -CkCat detectan algún problema con los datos.
Si se detecta un error general.
Por ejemplo, sqlmaint devuelve 1 si no se ha registrado SQL-DMO.

Ejemplos
A. Realizar comprobaciones DBCC en la base de datos Northwind. Crear un informe de texto y eliminar todos los informes existentes con más de 3 meses de antigüedad
sqlmaint -S MyServer -U "sa" -P "SaPwd" -D Northwind -CkDB -CkAl -CkTxtAl -CkCat -Rpt C:\MyReports\Nwind_chk.rpt -DelRpt 3months



B. Actualizar estadísticas mediante una muestra del 15% en todas las bases de datos de un plan. Además, reducir todas las bases de datos que hayan alcanzado los 110 MB para que tengan sólo el 10% de espacio libre
sqlmaint -S MyServer -U "sa" -P "SaPwd" -PlanName MyUserDBPlan -UpdOptiStats 15 -RmUnusedSpace 110 10



C. Realizar una copia de seguridad de todas las bases de datos de un plan en sus subdirectorios respectivos, en el directorio predeterminado C:\Mssql7\Backup.Además, eliminar las copias de seguridad con una antigüedad superior a 2 semanas
sqlmaint -S MyServer -U "sa" -P "SaPwd" -PlanName MyUserDBPlan -BkUpDB -BkUpMedia DISK -UseDefDir -CrBkSubDir -DelBkUps 2weeks



Espero que te sirva