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