Ao usar o T-SQL, você pode usar o
sp_add_schedule
procedimento armazenado para adicionar um agendamento do SQL Server Agent. Esse procedimento cria o agendamento, mas não o anexa a nenhum trabalho. Para anexá-lo a um trabalho, você deve usar o
sp_attach_schedule
procedimento. Você também pode usar
sp_add_jobschedule
para criar o cronograma e anexar tudo com o mesmo procedimento. Exemplo do sp_add_schedule
Procedimento
Aqui está um exemplo que usa
sp_add_schedule
para criar uma nova agenda:EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
Este procedimento armazenado aceita mais argumentos do que incluí neste exemplo, mas estes são alguns dos mais comuns. Consulte as tabelas abaixo para obter um resumo dos valores aceitos.
@schedule_name
é um argumento obrigatório, mas os outros são opcionais e têm configurações padrão caso você não as forneça. Agora podemos usar
sp_attach_schedule
para anexar esse agendamento a um trabalho existente:
EXEC sp_attach_schedule
@job_name = N'BackupPetHotelDB',
@schedule_name = N'RunDailyAM';
GO
Quando você usa
sp_attach_schedule
, você deve fornecer o nome do trabalho ou seu ID (mas não ambos), bem como o nome ou ID do agendamento (mas não ambos). Exemplo do sp_add_jobschedule
Procedimento
Aqui está um exemplo que usa
sp_add_jobschedule
para criar um novo cronograma e anexá-lo a um trabalho, tudo de uma vez:EXEC sp_add_jobschedule
@job_name = N'BackupMusicDB',
@name = N'Weekly_Sun_3AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 30000;
Com este procedimento o
@job_name
argumento fornece o nome do trabalho e o @name
argumento fornece o nome que você deseja dar ao agendamento. Valores de parâmetro
A forma como os dados de agendamento são armazenados no msdb banco de dados torna um pouco complicado quando se trata de agendamento de trabalhos com T-SQL.
Os valores de data/hora são armazenados como int tipos. O tipo de frequência é expresso como um int , assim como os valores de intervalo e várias outras opções.
Abaixo está uma visão geral dos valores aceitos para os parâmetros fornecidos nos exemplos acima.
@freq_type
Este argumento especifica quando um trabalho deve ser executado. Aceita os seguintes valores:
Valor | Descrição |
---|---|
1 | Uma vez |
4 | Diariamente |
8 | Semanalmente |
16 | Mensal |
32 | Mensal, relativo a freq_interval |
64 | Executar quando o serviço SQL Agent for iniciado |
128 | Executar quando o computador estiver ocioso |
@freq_interval
Este argumento especifica os dias em que um trabalho é executado.
Este argumento depende do valor do
@freq_type
argumento, conforme descrito na tabela a seguir:Valor de freq_type | Efeito em freq_interval |
---|---|
1 (uma vez) | freq_interval não é usado. |
4 (diariamente) | A cada freq_interval dias. |
8 (semanal) | freq_interval é um ou mais dos seguintes (combinado com um OR operador lógico):1 (Domingo) 2 (Segunda-feira) 4 (Terça-feira) 8 (Quarta-feira) 16 (Quinta-feira) 32 (Sexta-feira) 64 (sábado) |
16 (mensal) | No freq_interval dia do mês. |
32 (parente mensal) | freq_interval é um dos seguintes:1 (Domingo) 2 (Segunda-feira) 3 (Terça-feira) 4 (Quarta-feira) 5 (Quinta-feira) 6 (Sexta-feira) 7 (Sábado) 8 (Dia) 9 (Dia da semana) 10 (dia de fim de semana) |
64 (quando o serviço SQLServerAgent é iniciado) | freq_interval não é usado. |
128 | freq_interval não é usado. |
@freq_recurrence_factor
Isso especifica o número de semanas ou meses entre a execução agendada de um trabalho.
Este é int , com um padrão de
0
, e é usado somente se freq_type
é 8
, 16
, ou 32
. @active_start_time
Especifica a hora em qualquer dia entre o
@active_start_date
e o @active_end_date
argumentos para iniciar a execução de um trabalho. @active_start_time
é int , com um padrão de 000000
, que indica 12:00:00 A.M. em um relógio de 24 horas, e deve ser inserido usando o formulário HHMMSS. @active_start_date
Embora não esteja incluído nos meus exemplos acima, o
@active_start_date
O argumento permite especificar a data em que a execução de um trabalho pode começar. Este é int , com um padrão de NULL, que indica a data de hoje. A data é formatada como AAAAMMDD. @active_end_date
Você também pode fornecer um
@active_end_date
argumento, que especifica a data em que a execução de um trabalho pode parar. @active_end_date
é int , com um padrão de 99991231
, que indica 31 de dezembro de 9999. A data é formatada como AAAAMMDD. Mais informações
Consulte a documentação da Microsoft para
sp_add_schedule
e/ou documentação da Microsoft para sp_add_jobschedule
para mais detalhes sobre os vários argumentos e seus valores aceitos.