sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo utilizar el mismo programa para varios trabajos del Agente SQL Server (T-SQL)

Cuando crea un trabajo del Agente SQL Server, tiene la opción de crear un nuevo programa para ese trabajo o usar uno que ya existe.

Los horarios de trabajo se pueden administrar independientemente de los trabajos. Puede usar sp_add_schedule para crear el horario y sp_attach_schedule para adjuntar la programación a un trabajo.

Esto le permite adjuntar el mismo horario a varios trabajos.

Ejemplo

Supongamos que creamos un trabajo usando el siguiente código:

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

Ese código incluía el sp_add_schedule procedimiento almacenado. Este procedimiento crea una programación que puede ser utilizada por cualquier número de trabajos. En nuestro caso, llamamos al horario RunDailyAM .

Luego usamos sp_attach_schedule para adjuntar ese programa al trabajo del Agente SQL Server que acabamos de crear. Este es el procedimiento almacenado que podemos usar para adjuntar el mismo horario a trabajos posteriores.

Ahora vamos a crear otro trabajo del Agente SQL Server, pero esta vez no incluiremos el sp_add_schedule procedimiento:

USE msdb;  
GO  
EXEC dbo.sp_add_job  
    @job_name = N'BackupWorldDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupWorldDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [World] TO DISK = N''C:\Backups\World.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_attach_schedule  
   @job_name = N'BackupWorldDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupWorldDB',
    @server_name = N'(LOCAL)';  
GO

No usamos el sp_add_schedule procedimiento, porque usamos el horario que ya había sido creado en el trabajo anterior.

Sin embargo, usamos el sp_attach_schedule procedimiento almacenado, porque necesitábamos adjuntar el programa creado previamente a nuestro nuevo trabajo.

Entonces ambos trabajos ahora se ejecutarán en el mismo horario.

Averigüe a cuántos trabajos se adjunta un cronograma

Puede usar el sp_help_jobcount procedimiento para devolver el número de trabajos a los que se adjunta una programación dada. Solo proporcione el nombre del programa o ID cuando llame al procedimiento.

Ejemplo:

EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';

Resultado:

JobCount
--------
 2