Digamos que você precise parar um job em execução que roda durante a madrugada, você não está lá para parar ele manualmente certo? Digamos também que esse job se ele ultrapassar determinado horário ex: 7:00AM. Esse job começaria a bloquear várias tabelas que são necessárias para o andamento no ambiente de produção.
Então como você poderia parar ele caso ele ultrapassasse a janela de manutenção ou a janela de operações da madrugada? Para que na manhã seguinte você não encontre os clientes reclamando de lentidão no sistema e que não conseguem fazer nada.
Primeiro quero te mostrar algumas formas de visualizar os jobs que estão em execução.
A primeira e mais prática de todas é:
– Acessar o SQL Management Studio.
– Conectar na instância.
– Expandir SQL Server Agent.
– Clicar em Job Activity Monitor.
(imagem – job-activity-monitor)
Ou também via script:
– Primeira forma:
SELECT jb.name AS NomeDoJob, jb.originating_server AS NomeDoServidor, ja.run_requested_date AS InicioDoJob, DATEDIFF(MINUTE, ja.run_requested_date, GETDATE()) as TempoDecorridoMinutos, case when ja.last_executed_step_id is null then 'Step '+Cast (start_step_id as varchar(20)) +' ['+sstep.step_name+'] executing' else 'Step ' +Cast ( last_executed_step_id+1 as varchar(20))+' ['+ lstep.step_name + '] executing' end CurrentStepID , sstep.step_name JobComecouNoStep , Case ja.run_requested_source when 1 then 'SCHEDULER' when 2 then 'ALERTER' when 3 then 'BOOT' when 4 then 'USER' when 6 then 'ON_IDLE_SCHEDULE' else 'Unknown' end JobRunSource FROM msdb.dbo.sysjobs_view jb INNER JOIN msdb.dbo.sysjobactivity ja ON jb.job_id = ja.job_id INNER JOIN msdb.dbo.syssessions sess ON sess.session_id = ja.session_id LEFT JOIN MSDB.DBO.sysjobsteps sstep ON sstep.step_id =start_step_id and sstep.job_id=jb.job_id LEFT JOIN MSDB.DBO.sysjobsteps lstep ON lstep.step_id =last_executed_step_id + 1 and lstep.job_id=jb.job_id WHERE stop_execution_date IS NULL AND run_requested_date IS NOT NULL
– Segunda forma:
SELECT [sjv].[name] AS Nome, [sjv].[description] AS Descricao, [sja].[run_requested_date] AS DataDeRequisicaoDaExecucao, [sja].[last_executed_step_id] AS UltimoStepExecutado FROM [msdb].[dbo].[sysjobs_view] sjv JOIN [msdb].[dbo].[sysjobactivity] sja ON [sjv].[job_id] = [sja].[job_id] WHERE [sja].[run_requested_date] IS NOT NULL AND [sja].[stop_execution_date] IS NULL
Beleza! Agora como podemos parar esse job que está em execução?
Simples usando a procedure sp_stop_job Ex: EXEC dbo.sp_stop_job N’SeuJob’
Só isso? Sim! Porém digamos que você criou um job e colocou o seguinte código para parar seu job:
use [msdb] go EXEC dbo.sp_stop_job N'SeuJob' -- No parâmetro SeuJob é o nome do Job.
Se o job estiver rodando naquele momento, ele vai parar obviamente, agora se ele não estiver rodando ele vai retornar o seguinte erro:
Msg 14262, Level 16, State 1, Procedure sp_verify_job_identifiers, Line 67
The specified @job_name (‘SeuJob’) does not exist.
Então para contornar isso basta você fazer da seguinte forma:
USE msdb IF EXISTS (SELECT 1 FROM msdb.dbo.sysjobs J JOIN msdb.dbo.sysjobactivity A ON A.job_id = J.job_id WHERE J.name = N'SeuJob' AND A.run_requested_date IS NOT NULL AND A.stop_execution_date IS NULL) --PRINT 'The job is running!' EXEC dbo.sp_stop_job N'SeuJob' ELSE PRINT 'O Job Não Está Executando'
Sendo assim seu job não aparecerá como falha, mas sim uma mensagem informando que ele não está executando o que provavelmente ele já foi finalizado antes das 7:00AM
Lembrando que é válido também verificar esse job no seu checklist diário para descobrir se ele teve que parar o que estava em execução ou não. Se ele teve que parar, você deve imediatamente verificar o motivo que levou ele executar por tanto tempo.
If you are a fan of online gambling, then you must have come across gry…
On the internet online casinos have transformed the betting industry, enabling players to vegas.hu online…
Casinos online offer free spins to draw new customers. These bonuses are usually very profitable,…
In recent times, online casino sites have actually obtained enormous appeal among gamers, providing a…
Bitcoin, the most preferred cryptocurrency worldwide, has reinvented lots of industries, including the on baixar…
Online slots have turned into one of one of the most preferred forms of home…