Continuando con la entrada Listar jobs y su owners , os queremos mostrar cómo cambiar el owner de todos nuestros Jobs a través de T-SQL.
Esto es algo que ya nos ha ocurrido en varios de nuestros proyectos con el fin de unificar la configuración de todos los Jobs, por ejemplo.
Para ello siempre hacemos uso del conocido procedimiento almacenado sp_update_job sp_update_job con la siguiente query:
DECLARE
@UpdateJob VARCHAR(MAX) = '',
@LoginDestino VARCHAR(100) = 'usersicuel01'
SELECT @UpdateJob += '
EXEC msdb.dbo.sp_update_job @job_id = ''' + CAST(A.job_id AS VARCHAR(50)) + ''', @owner_login_name = ''' + @LoginDestino + ''';'
FROM
msdb.dbo.sysjobs A
EXEC(@UpdateJob)
Con la query que os mostramos en la entrada Listar jobs y sus owners podemos comprobar como ha cambiado el propietario de todos nuestros Jobs de un plumazo:
Sin embargo, también nos podemos encontrar que queremos cambiar los Jobs que son propiedad de un usuario y reasignarlo a otro. Por ejemplo, porque ya no se encuentra en la empresa. Veamos cómo podemos asignar todos estos trabajos propiedad de un usuario a otro usuario con el siguiente script:
USE msdb ;
GO
EXEC dbo.sp_manage_jobs_by_login
@action = N'REASSIGN',
@current_owner_login_name = N'usersicuel01',
@new_owner_login_name = N'usersicuel02';
GO
Pero, y si esto lo tenemos que hacer en varias instancias en diferentes servidores ¿cómo lo podemos hacer? Para ello os recomendamos repasar nuestra entrada https://sicuel.es/2019/04/18/con-que-cuenta-de-servicio-y-en-que-puerto-escucha-tu-sql-server/ dónde explicamos como, gracias a Power Shell, podemos ejecutar consultas simultáneamente en muchas instancias.