Trabalhos de Longa Execução

Microsoft.SQLServer.Linux.Monitor.Agent.LongRunningJobs (UnitMonitor)

Este monitor verifica os trabalhos de longa execução do SQL Agent.
Observe que o Serviço SQL Server Agent não é compatível com nenhuma edição do SQL Server Express; não há objeto descoberto adequado. Este monitor está desabilitado por padrão. Use substituições para habilitá-lo quando necessário.

Knowledge Base article:

Resumo

Este monitor verifica os trabalhos de longa duração do SQL Agent. Um aviso ou alerta de erro será gerado se um trabalho estiver demorando mais que o limite configurado.

Por padrão, este monitor não monitora trabalhos com o tipo de agendamento "Iniciar automaticamente quando o SQL Server Agent for iniciado" porque normalmente eles são executados até o SQL Server parar (isto é, de maneira contínua) e esse comportamento é normal para eles. Geralmente, a Replicação do SQL Server usa esses trabalhos. No entanto, em alguns casos, os trabalhos com o tipo de agendamento "Iniciar automaticamente quando o SQL Server Agent for iniciado" podem ser executados por um intervalo de tempo relativamente curto. Para monitorar esses trabalhos, substitua o parâmetro "Trabalhos continuamente executados incluídos" por uma lista delimitada por vírgula dos nomes dos trabalhos. O nome do trabalho na lista deve atender aos requisitos de uma das classes de identificador a seguir:

1) Regular:

2) Delimitado:

Qualquer nome que pertença a uma das classes acima deve ter de 1 a 128 caracteres, não incluindo os caracteres delimitadores.

Causas

Um estado não íntegro ocorre devido a um trabalho do SQL Server Agent que demorou mais do que o limite definido. Isso pode indicar um problema com o trabalho.

O SQL Server Agent é responsável pela execução de tarefas do SQL Server agendadas para ocorrer em horários ou intervalos específicos e pela detecção de condições específicas para as quais os administradores definiram uma ação, como alertar alguém por meio de páginas ou emails, ou uma tarefa que solucionará essas condições. O SQL Server Agent também é usado para executar tarefas de replicação definidas pelos administradores.

Para identificar o trabalho que provocou o aviso ou o estado de erro, examine os dados do contexto da alteração de estado ou do alerta.

Resoluções

Verifique o SQL Server Management Studio para identificar os trabalhos em execução. Se esses trabalhos estiverem demorando mais que o necessário, investigue-os para descobrir o motivo.

Use sp_help_jobactivity para obter informações sobre os trabalhos em execução no momento.

Como alternativa, se for esperada a execução de alguns trabalhos do agente por um longo tempo:

Parâmetros Substituíveis

Nome

Descrição

Valor Padrão

Prioridade do Alerta

Define a Prioridade do Alerta.

Normal

Severidade do Alerta

Define a Severidade do Alerta.

MatchMonitorHealth

Limite crítico (minutos)

O estado do monitor será alterado para Crítico se o valor exceder esse limite. Se estiver entre esse limite e o limite de aviso (inclusive), isso fará com que o monitor fique estado de aviso.

120

Habilitado

Habilita ou desabilita o fluxo de trabalho.

Não

Gera Alertas

Define se o fluxo de trabalho gera ou não um Alerta.

Sim

Trabalhos executados continuamente incluídos

Alguns trabalhos do SQL Agent podem ser executados indefinidamente (até o agente ser interrompido). Eles normalmente têm agenda um tipo de agenda "Iniciar automaticamente quando o SQL Server Agent é iniciado". Por exemplo, a replicação do SQL Server geralmente usa esses trabalhos. Esses trabalhos levam a falsos alertas e por padrão a monitoração não os leva em conta. Mas podem haver exclusões quando esses trabalhos são executados por um curto período. Para monitorar esses trabalhos, deve ser definida uma lista com os nomes deles delimitados por vírgula.

 

Intervalo (segundos)

O intervalo de tempo recorrente em segundos no qual executar o fluxo de trabalho.

600

Tempo de Sincronização

O tempo de sincronização especificado usando um formato de 24 horas. Pode ser omitido.

 

Tempo Limite (em segundos)

Especifica o tempo que o fluxo de trabalho pode para ser executado antes de ser fechado e marcado como falha.

300

Tempo limite da conexão de banco de dados (segundos)

O fluxo de trabalho falhará e registrará um evento, se ele não conseguir acessar o banco de dados durante o período especificado.

15

Limite de aviso (minutos)

Limite de aviso. Exceder esse limite resultará na alteração do estado do monitor, pelo menos para um estado de aviso.

60

Element properties:

TargetMicrosoft.SQLServer.Linux.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Linux.MonitorType.Agent.LongRunningJobs
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL em Linux: trabalhos de longa duração
Existem trabalhos de agentes de longa duração na instância do SQL {1} no computador {0}. Isso pode indicar um problema com um ou mais trabalhos.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.Agent.LongRunningJobs" Accessibility="Public" Enabled="false" Target="SqlDiscL!Microsoft.SQLServer.Linux.Agent" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.Agent.LongRunningJobs" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.Monitor.Agent.LongRunningJobs.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Success"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Error"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<IncludedJobs/>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>