Cambiar el propietario de nuestros Jobs de SQL Server a priori es una tarea manual que debemos hacer uno a uno. Este es un proceso común cuando un usuario propietario de varios jobs abandona la compañía o cambia de rol y sus trabajos deben ser asignados a otra persona. Sin embargo, con un poco de conocimiento sobre las tablas y procedimientos de sistema de la MSDB y con código T-SQL dinámico vamos a poder automatizar el proceso.
Para cambiar automáticamente el propietario de todos los jobs de un usuario a otro usaremos el siguiente script. Como has podido ver en el video lo que hace es generar dinámicamente los procedimientos sp_update_job y sp_update_schedule con los parámetros necesarios para cada uno de los jobs y programaciones y el nuevo propietario. Para ello hace uso de las tablas de la base de datos msdb sysjobs, sysjobsschedules y sysschedules cruzando estas con la vista syslogins de master donde encontraremos los logins. De esta manera podemos localizar fácilmente los jobs que pertenecían al antiguo usuario y que debemos cambiar el propietario.
SELECT
'GO
EXEC msdb.dbo.sp_update_job @job_id=N'''+convert(varchar(36),J.job_id)+''',
@owner_login_name=N''sa''
GO'
,'GO
EXEC msdb.dbo.sp_update_schedule @schedule_id=N'''+convert(varchar(36),s.schedule_id)+''',
@owner_login_name==N''sa''
GO'
,j.job_id
,j.name job_name
,j.enabled job_enabled
,s.name schedule_name
,s.schedule_id
,s.schedule_uid
,s.enabled schedule_enabled
FROM
msdb.dbo.sysjobs j
FULL JOIN msdb.dbo.sysjobschedules js on j.job_id = js.job_id
FULL JOIN msdb.dbo.sysschedules s on js.schedule_id = s.schedule_id
INNER JOIN sys.syslogins l on j.owner_sid = l.sid
WHERE
l.name LIKE 'usuario antiguo'
ORDER BY j.name
Espero que te haya gustado el video, si es así por favor, deja tu me gusta y suscríbete al canal que nos ayuda mucho. Si quieres ver más videos como este puedes encontrarlos todos aquí. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram al que te puede unir. En este grupo estamos creando una comunidad de usuarios y administradores de SQL Server donde cualquiera pueda preguntar sus dudas y compartir sus casos prácticos para que todos seamos mejores profesionales. ¡Hasta la próxima!

