Když vytvoříte úlohu SQL Server Agent, máte možnost vytvořit nový plán pro tuto úlohu nebo použít ten, který již existuje.
Plány úloh lze spravovat nezávisle na zakázkách. Můžete použít sp_add_schedule
vytvořte plán a sp_attach_schedule
pro připojení rozvrhu k úloze.
To vám umožní připojit stejný plán k více úlohám.
Příklad
Předpokládejme, že vytvoříme úlohu pomocí následujícího kódu:
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
Tento kód obsahoval sp_add_schedule
uložené procedury. Tento postup vytvoří plán, který může použít libovolný počet úloh. V našem případě jsme plán nazvali RunDailyAM
.
Poté jsme použili sp_attach_schedule
připojit tento plán k úloze SQL Server Agent, kterou jsme právě vytvořili. Toto je uložená procedura, kterou můžeme použít k připojení stejného plánu k dalším úlohám.
Nyní vytvoříme další úlohu SQL Server Agent, ale tentokrát nezahrneme sp_add_schedule
postup:
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
Nepoužili jsme sp_add_schedule
postup, protože jsme použili rozvrh, který již byl vytvořen v předchozí zakázce.
My jsme však použili sp_attach_schedule
uložená procedura, protože jsme potřebovali připojit dříve vytvořený plán k naší nové úloze.
Obě úlohy tedy nyní poběží podle stejného plánu.
Zjistěte, kolik úloh, ke kterým je plán připojen
Můžete použít sp_help_jobcount
postup pro vrácení počtu úloh, ke kterým je daný plán připojen. Stačí zadat název plánu nebo ID při volání procedury.
Příklad:
EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';
Výsledek:
JobCount -------- 2