dbo.sysjobhistory (Transact-SQL)
Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure
Contém informações sobre a execução de trabalhos agendados pelo SQL Server Agent.
Observação
Na maioria dos casos, os dados são atualizados somente após a conclusão da etapa de trabalho, e a tabela normalmente não contém registros de etapas de trabalho que estão em andamento no momento. Em alguns casos, os processos subjacentes fornecem informações sobre as etapas do trabalho em andamento.
Essa tabela é armazenada no msdb
banco de dados.
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
instance_id |
int | Identificador exclusivo da linha. |
job_id |
uniqueidentifier | ID do trabalho. |
step_id |
int | ID da etapa no trabalho. |
step_name |
sysname | Nome da etapa. |
sql_message_id |
int | ID de qualquer mensagem de erro do SQL Server retornada se o trabalho falhar. |
sql_severity |
int | Gravidade de qualquer erro do SQL Server. |
message |
nvarchar(4000) | Texto, se houver, de um erro do SQL Server. |
run_status |
int | O status da execução do trabalho:0 = Falhou1 = Sucedido2 = Repetir3 = Cancelado4 = Em andamento |
run_date |
int | Data em que o trabalho ou etapa iniciou a execução, no yyyyMMdd formato. Para um histórico em andamento, esse valor é a data e a hora em que o histórico foi escrito. |
run_time |
int | Hora em que o trabalho ou etapa foi iniciado no HHmmss formato. |
run_duration |
int | Tempo decorrido na execução do trabalho ou etapa em HHmmss formato por períodos de tempo de até 24 horas. Encontre código para traduzir durações de execução mais longas no exemplo. |
operator_id_emailed |
int | ID do operador notificado quando o trabalho foi concluído. |
operator_id_netsent |
int | ID do operador notificado por uma mensagem quando o trabalho foi concluído. |
operator_id_paged |
int | ID do operador notificado por pager quando o trabalho foi concluído. |
retries_attempted |
int | Número de tentativas repetidas para o trabalho ou a etapa. |
server |
sysname | Nome do servidor no qual o trabalho foi executado. |
Exemplos
A consulta Transact-SQL a seguir converte as run_date
colunas e run_time
em uma coluna datetime chamada LastRunStartDateTime
. A run_duration
coluna é convertida em uma coluna int chamada LastRunDurationSeconds
. Essas duas colunas são usadas para calcular o LastRunFinishDateTime
. A run_duration
coluna também é convertida em um formato mais amigável. Você pode executar o script no SQL Server Management Studio ou no Azure Data Studio.
SET NOCOUNT ON;
SELECT sj.name AS Name,
sh.step_name AS StepName,
shp.LastRunStartDateTime,
DATEADD(SECOND, shp.LastRunDurationSeconds, shp.LastRunStartDateTime) AS LastRunFinishDateTime,
shp.LastRunDurationSeconds,
CASE
WHEN sh.run_duration > 235959
THEN CAST((CAST(LEFT(CAST(sh.run_duration AS VARCHAR),
LEN(CAST(sh.run_duration AS VARCHAR)) - 4) AS INT) / 24) AS VARCHAR)
+ '.' + RIGHT('00' + CAST(CAST(LEFT(CAST(sh.run_duration AS VARCHAR),
LEN(CAST(sh.run_duration AS VARCHAR)) - 4) AS INT) % 24 AS VARCHAR), 2)
+ ':' + STUFF(CAST(RIGHT(CAST(sh.run_duration AS VARCHAR), 4) AS VARCHAR(6)), 3, 0, ':')
ELSE STUFF(STUFF(RIGHT(REPLICATE('0', 6) + CAST(sh.run_duration AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')
END AS [LastRunDuration (d.HH:MM:SS)],
DATEADD(SECOND, shp.LastRunDurationSeconds, shp.LastRunStartDateTime) AS LastRunFinishDateTime
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobhistory sh ON sj.job_id = sh.job_id
CROSS APPLY (SELECT DATETIMEFROMPARTS(sh.run_date / 10000, -- years
sh.run_date % 10000 / 100, -- months
sh.run_date % 100, -- days
sh.run_time / 10000, -- hours
sh.run_time % 10000 / 100, -- minutes
sh.run_time % 100, -- seconds
0 -- milliseconds
) AS LastRunStartDateTime,
(sh.run_duration / 10000) * 3600 -- convert hours to seconds, can be greater than 24
+ ((sh.run_duration % 10000) / 100) * 60 -- convert minutes to seconds
+ (sh.run_duration % 100) AS LastRunDurationSeconds
) AS shp;
GO
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de