Mostrando entradas con la etiqueta base de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta base de datos. Mostrar todas las entradas

Ejecutar una Tarea SQL mediante un Archivo por Lotes o Batch

Cada persona encargada de una base de datos va a llegar a la situación en que debe realizar tareas de mantenimiento como realizar backups de bases de datos, reindexar tablas y otras tareas similares.

Esas tareas idealmente deben ser programadas, y ellas son ejecutadas en una agenda programada. Pero en el caso que la tarea deba ser ejecutada a voluntad ("On Demand", bajo demanda) necesitará intervención humana, y la persona obviamente necesitará tener conocimientos técnicos para poder desarrollarla.

Entonces, el reto esta ahí, y es que podamos hacer que cualquier persona, tenga habilidades técnicas o no, pueda ejecutar dichas tareas.

Una forma seria utilizar un script VBS y utilizar DMO para ejecutar la tarea. Otra forma, y al parecer más sencilla es ejecutar un comando osql en un archivo por lotes o batch.

La utilidad osql permite ejecutar sentencias Transact-SQL, procedimientos de sistema y archivos script. Esta utilidad utiliza ODBC para comunicarse con el servidor.

PRIMER PASO:
Ver si el trabajo a realizar puede ser ejecutado utilizando osql. Abrimos una ventana de comandos y ejecutamos la siguiente sentencia osql en ella:

osql -S "NOMBRE_INSTANCIA_SERVIDOR" -E -Q"exec msdb.dbo.sp_start_job ' BACKUPTEST ' "


Aquí "NOMBRE_INSTANCIA_SERVIDOR" es el nombre de la instanacia Sql Server ejecutandose en la computadora y sobre la cual se va a ejecutar la tarea. "BACKUPTEST" es el nombre de la tarea que ejecutará el trabajo de mantenimiento deseado. Despues de ejecutar el comando notaras que el procedimiento almacenado de sistema 'sp_start_job' ejecuta la tarea deseada sobre la instancia del servidor elegida.

SEGUNDO PASO:
El siguiente paso es crear un archivo por lotes. Abre el Bloc de Notas y escribe los siguientes comandos:

ECHO ejecutando tarea
ECHO.
pause
osql -S "NOMBRE_INSTANCIA_SERVIDOR" -E -Q"exec msdb.dbo.sp_start_job ' BACKUPTEST ' "
ECHO tarea ejecutada
pause
CLS
EXIT


Guarda el archivo como "Tarea.bat".

Luego, el archivo por lotes está listo para ser utilizado. Solo se hace doble click sobre el archivo y el trabajo de mantenimiento se realizará, sin necesidad de tener conocimientos de SQL Server.

Base de datos del Ejemplo

Anteriormente publiqué un ejemplo donde explicaba como conectarse desde Visual Basic 6 al Sql Server 2000, pero olvidé indicar que utilizaba la base de datos Pubs que viene con el Sql Server.

De todas maneras dejo este enlace para que la descarguen.

Descarga de Pubs.