Algunas veces, desarrolladores o malos administradores de BBDD, crean Jobs con usuarios propietarios incorrectos, lo que conlleva a que cuando queremos depurar usuarios que no corresponden, nos encontramos imposibilitados de hacerlo ya que nos da un error diciendo que existen Jobs asociados al usuario que queremos eliminar.
Para corregir esto, y asociar todos los usuarios al System Administrator, debemos ejecutar el siguiente Script.
use msdb
go
DECLARE @db_job_count INT
SELECT @db_job_count = count(distinct(suser_sname(owner_sid))) from msdb..sysjobs where suser_sname(owner_sid) <> 'sa'
IF @db_job_count > '0'
BEGIN
DECLARE @change_job_id VARCHAR(50)
DECLARE @change_job_name VARCHAR(100)
DECLARE job_id_cursor CURSOR FOR
SELECT job_id, name FROM msdb..sysjobs WHERE suser_sname(owner_sid) <> 'sa'
OPEN job_id_cursor
FETCH NEXT FROM job_id_cursor
INTO @change_job_id, @change_job_name
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @sql_statement NVARCHAR(255)
EXEC msdb..sp_update_job @job_id = @change_job_id, @owner_login_name ='sa'
PRINT 'Job ' + @change_job_name + ' has been updated to sa ownership'
FETCH NEXT FROM job_id_cursor INTO @change_job_id, @change_job_name
END
CLOSE job_id_cursor
DEALLOCATE job_id_cursor
END