No SQL Server, você pode usar o
sp_update_job
procedimento armazenado para modificar um trabalho existente do SQL Server Agent. Exemplo
Neste exemplo, criamos um trabalho e usamos
sp_update_job
para modificar esse trabalho. Criar o trabalho
Primeiro, crie o trabalho:
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BakMovies',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
GO
EXEC sp_add_jobstep
@job_name = N'BakMovies',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
GO
EXEC sp_add_schedule
@schedule_name = N'Run_Sat_5AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 050000;
GO
EXEC sp_attach_schedule
@job_name = N'BakMovies',
@schedule_name = N'Run_Sat_5AM';
GO
EXEC sp_add_jobserver
@job_name = N'BakMovies';
GO
O código acima usa cinco procedimentos armazenados, mas o
sp_update_job
procedimento atualiza apenas os detalhes que foram criados com o sp_add_job
procedimento. Os outros procedimentos têm seu próprio procedimento de “atualização” correspondente. Então, para ficar claro, a parte a seguir é a parte que podemos atualizar com o
sp_update_job
procedimento. EXEC sp_add_job
@job_name = N'BakMovies',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
Nesse caso, fornecemos apenas três argumentos ao criar o trabalho. Na verdade, o procedimento aceita muito mais do que isso, mas o único argumento necessário é o nome do trabalho.
Atualizar o trabalho
Agora podemos usar
sp_update_job
para modificar o trabalho acima. EXEC sp_update_job
@job_name = N'BakMovies',
@new_name = N'BackupMoviesDB',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
A única coisa que este exemplo faz é alterar o nome do trabalho.
O
sp_update_job
O procedimento armazenado altera apenas as configurações para as quais os valores de parâmetro são fornecidos. Se um parâmetro for omitido, a configuração atual será mantida. Portanto, neste caso, poderíamos ter omitido a descrição e o nome da categoria:
EXEC sp_update_job
@job_name = N'BakMovies',
@new_name = N'BackupMoviesDB';
Desativar um trabalho
Você pode desabilitar um trabalho definindo
@enabled
para 0
:EXEC sp_update_job
@job_name = N'BackupMoviesDB',
@new_name = N'BackupMoviesDB (DISABLED)',
@enabled = 0;
Neste exemplo, também alterei o nome do trabalho para tornar aparente que o trabalho está desabilitado.
Verifique o trabalho
Você pode usar
sp_help_job
para visualizar as configurações atuais de um trabalho. Você pode usá-lo com ou sem parâmetros. Quando usado sem parâmetros, retorna todos os trabalhos.
EXEC sp_help_job;
Se você quiser ver apenas os detalhes de um trabalho, forneça o nome ou o ID do trabalho.
Assim:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
Veja como fica o resultado ao executá-lo no SSMS:
Embora, ao fornecer o nome, você precise lembrar o sobrenome que deu ao trabalho. No nosso caso, se executarmos este procedimento após o exemplo anterior (quando desabilitamos o trabalho), precisaríamos fazer isso:
EXEC sp_help_job
@job_name = 'BackupMoviesDB (DISABLED)';
No entanto, o ID do trabalho permanece constante, portanto, você pode usá-lo independentemente do nome do trabalho.
Exemplo:
EXEC sp_help_job
@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';
Ao usar o ID, você pode omitir o nome do parâmetro, se desejar.
Exemplo:
EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';
O que acontece com as etapas do trabalho, cronograma, etc?
A modificação de um trabalho não interrompe as etapas desse trabalho e as informações de agendamento. As etapas e o cronograma de um trabalho permanecerão intactos depois que você fizer qualquer modificação.
Se você precisar modificar as etapas ou agendar, precisará usar o procedimento armazenado apropriado para elas (por exemplo, use
sp_update_schedule
para atualizar sua agenda e sp_update_jobstep
para atualizar sua etapa de trabalho). Sintaxe Completa
A sintaxe completa de
sp_update_job
fica assim:sp_update_job [ @job_id =] job_id | [@job_name =] 'job_name'
[, [@new_name =] 'new_name' ]
[, [@enabled =] enabled ]
[, [@description =] 'description' ]
[, [@start_step_id =] step_id ]
[, [@category_name =] 'category' ]
[, [@owner_login_name =] 'login' ]
[, [@notify_level_eventlog =] eventlog_level ]
[, [@notify_level_email =] email_level ]
[, [@notify_level_netsend =] netsend_level ]
[, [@notify_level_page =] page_level ]
[, [@notify_email_operator_name =] 'operator_name' ]
[, [@notify_netsend_operator_name =] 'netsend_operator' ]
[, [@notify_page_operator_name =] 'page_operator' ]
[, [@delete_level =] delete_level ]
[, [@automatic_post =] automatic_post ]
Consulte a documentação da Microsoft para
sp_update_job
para uma explicação de cada parâmetro, bem como os valores que cada um aceita.