Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar um agendamento do SQL Server Agent com T-SQL


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.