sql >> Database >  >> RDS >> Sqlserver

Hetzelfde schema gebruiken voor meerdere SQL Server Agent-taken (T-SQL)

Wanneer u een SQL Server Agent-taak maakt, hebt u de mogelijkheid om een ​​nieuwe planning voor die taak te maken of een bestaande planning te gebruiken.

Taakschema's kunnen onafhankelijk van taken worden beheerd. U kunt sp_add_schedule . gebruiken om het schema te maken en sp_attach_schedule om het schema aan een taak te koppelen.

Hierdoor kunt u hetzelfde schema aan meerdere taken koppelen.

Voorbeeld

Stel dat we een taak maken met behulp van de volgende code:

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

Die code bevatte de sp_add_schedule opgeslagen procedure. Met deze procedure wordt een planning gemaakt die door een willekeurig aantal taken kan worden gebruikt. In ons geval noemden we het schema RunDailyAM .

We gebruikten toen sp_attach_schedule om dat schema te koppelen aan de SQL Server Agent-taak die we zojuist hebben gemaakt. Dit is de opgeslagen procedure die we kunnen gebruiken om hetzelfde schema aan volgende taken toe te voegen.

Laten we nu nog een SQL Server Agent-taak maken, maar deze keer nemen we de sp_add_schedule niet op procedure:

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

We hebben de sp_add_schedule . niet gebruikt procedure, omdat we het schema gebruikten dat al in de vorige taak was gemaakt.

We hebben echter de sp_attach_schedule . gebruikt opgeslagen procedure, omdat we het eerder gemaakte schema aan onze nieuwe baan moesten koppelen.

Dus beide taken zullen nu volgens hetzelfde schema worden uitgevoerd.

Ontdek aan hoeveel taken een planning is gekoppeld

U kunt de sp_help_jobcount . gebruiken procedure om het aantal taken terug te geven waaraan een bepaald schema is gekoppeld. Geef gewoon de naam of ID van het schema op wanneer u de procedure aanroept.

Voorbeeld:

EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';

Resultaat:

JobCount
--------
 2


  1. Een databasediagram maken in Access

  2. Selecteer mysql-query tussen datum?

  3. Gebruik TYPE_ID() om de ID van een gegevenstype in SQL Server op te halen

  4. SQL UPDATE:leer hoe u waarden in een tabel kunt bijwerken