2014/10/31

EJECUTAR TAREA PROGRAMADA USANDO CODIGO T-SQL

Una de las muchas necesidades que se nos pueden presentar es ejecutar una tarea programada ( JOB ) desde código T-SQL, bien les mostraré como lograrlo utilizando el procedimiento msdb.dbo.sp_start_job, solo necesitan el nombre de la tarea programada tal y cual como aparece en el Job Activity Monitor.
EXEC msdb.dbo.sp_start_job 'nombreTareaProgramada'

Obtendrán como resultado algo así:

Pero esto solo lo podrán ejecutar siempre y cuando hayan accesado como SA ( System Administrator ), pero por cuestiones de seguridad es necesario ingresar con un usuario con menos permisos, por lo tanto se encontrarán con un error como este:

Para solucionarlo es necesario darle los permisos para que pueda ejecutar dicho procedimiento almacenado localizado en la base de datos msdb.

Primero debemos crear un usuario en la base de datos msdb para nuestro login( dicho login es el que tiene acceso a una base de datos diferente y no tiene permisos sobre la base de datos msdb ), para el ejemplo utilizaré un login llamado loginPrueba y agregamos el rol a nuestro nuevo usuario de la siguiente manera:
USE msdb

CREATE USER userPrueba FOR LOGIN loginPrueba 
GO


EXEC sp_addrolemember N'SQLAgentOperatorRole', N'userPrueba'
La forma gráfica de lograr esto es de la siguiente manera:

Una vez que estemos conectados como SA, abrimos la carpeta Security y damos doble click sobre nuestro login.

Ahora, en el apartado User Mapping seleccionamos la base de datos msdb y escribimos el nombre del usuario y seleccionamos el rol SQLAgentOperatorRole. Es necesario revisar que es lo hace cada rol para evitar cuestiones de seguridad en nuestro servidor, les dejo la liga SQL Server Agent Fixed Database Roles.


Esto es todo, ya podremos ejecutar tareas programadas desde T-SQL.

SALUDOS.
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE

0 comentarios:

Publicar un comentario