Buscar este blog

lunes, 13 de diciembre de 2010

Startup Procedures

El día de hoy explicare el funcionamiento de una caracteristica desconocida por muchos pero puede ser de mucha utilidad especialmente al momento de administrar un servidor. SQL Server ofrece el procedimiento almacenado de sistema "sp_procoption" que permite asignar la propiedad de ejecutarse cuando el servicio de SQL Server se inicie, a otro procedimiento almacenado creado por el usuario.

Una de las utilidades que se le puede dar a esta caracteristica es ejecutar un procedimiento almacenado que envie correos a los administradores de la aplicacion indicandoles que el servidor de base de datos ha sido reiniciado. Tambien se le puede usar para poder iniciar una traza automaticamente para monitoriar el uso de la base de datos, asi como este se pueden hacer muchas otras cosas al iniciar el servicio de base de datos.

La sintaxis de este procedimiento se puede verificar aqui. Pero este procedimiento tambien tiene algunas restricciones las cuales se detallan a continuacion:
  • Debes estar logueado como sysadmin para usar el procedimeinto "sp_procoption".
  • Solo se pueden desigar como "startup procedures" a procedimientos almacenados standard, procedimientos almacenados extendidos y procedimientos almaceados CLR.
  • El procedimiento almacenado debe estar localizado dentro de la base de datos Master.
  • El procedimiento almacenado no debe tener ningun parametro, ni de entrada ni de salida.
Para consultar los procedimientos almacenados que han sido activados como "startup procedures", podemos ejecutar el siguiente query sobre la base de datos Master:

select name
from sys.objects
where type = 'p'
and OBJECTPROPERTY(object_id, 'ExecIsStartup') = 1


Como punto final se debe tener en cuenta que si se re-crea el procedimiento almacenado marcado como "startup procedure", se debe volver a marcar debido a que esta configuracion se pierde al hacerse un drop al procedimiento. Adicionalmente se debe tener en cuenta que la opcion de configuracion "scan for startup procs" debe estar encendida para que esto funcione, pero para facilitarnos la vida, SQL Server, al momento de ejecutar el procedimiento "sp_procoption", automaticamente esta opcion se activara. Para verificar esta si esta opcion esta encendida podemos ejecutar las siguiente sentencias:

USE master;
GO
EXEC sp_configure 'show advanced option', '1';
RECONFIGURE
EXEC sp_configure 'scan for startup procs', '1';
RECONFIGURE

En conclusión esta es una nueva caracteristica de SQL Server que nos puede traer beneficios al momento de administrar nuestro servidor de base de datos o incluso nuestra aplicacion dependiendo del uso que se le de a esta caracteristica.

No hay comentarios:

Publicar un comentario