장기 실행 작업

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

이 모니터는 장기 실행 SQL 에이전트 작업을 확인합니다.
SQL Server 에이전트 서비스는 모든 버전의 SQL Server Express에서 지원되지 않으므로 적절한 검색된 개체가 없습니다. 이 모니터는 기본적으로 사용하지 않도록 설정되어 있습니다. 필요한 경우 사용하도록 설정하려면 재정의를 사용하세요.

Knowledge Base article:

요약

이 모니터는 장기 실행 SQL 에이전트 작업을 확인합니다. 구성된 임계값보다 작업이 오래 실행되면 경고나 오류가 발생합니다.

일정 유형이 'SQL Server 에이전트가 시작될 때 자동으로 시작'인 작업은 SQL 에이전트가 중지될 때까지(즉, 연속해서) 실행되는 경우가 많으므로 이 모니터는 기본적으로 이러한 작업을 모니터링하지 않으며 이 같은 동작은 정상적인 것입니다. 일반적으로 SQL Server 복제에서는 이러한 작업을 사용합니다. 하지만 경우에 따라 일정 유형이 'SQL Server 에이전트가 시작될 때 자동으로 시작'인 작업이 비교적 짧은 시간 동안 실행될 수도 있습니다. 이러한 작업을 모니터링하려면 '연속해서 실행되는 작업이 포함됨' 매개 변수를 이러한 작업 이름이 쉼표로 구분된 목록으로 재정의하면 됩니다. 목록의 작업 이름은 다음 식별자 클래스 중 하나의 요구 사항을 충족해야 합니다.

1) 일반:

2) 분리됨:

위의 클래스에 속하는 이름은 구분 기호 문자를 제외하고 1~128자여야 합니다.

원인

비정상 상태는 SQL Server 에이전트 작업이 정의된 임계값보다 오래 실행되었을 때 야기됩니다. 작업에 문제가 있을 수 있습니다.

SQL Server 에이전트는 특정 시간이나 간격으로 발생하도록 예약된 SQL Server 태스크를 실행할 뿐 아니라 관리자가 호출 또는 전자 메일을 통한 경고와 같은 동작을 정의한 특정 상태 또는 이러한 상태를 해결할 태스크를 검색합니다. SQL Server 에이전트는 관리자가 정의한 복제 태스크 실행에도 사용됩니다.

경고 또는 오류 상태를 야기시킨 작업을 식별하려면 상태 변경 또는 경고에 대한 컨텍스트 데이터를 확인합니다.

해결 방법

SQL Server Management Studio를 확인하여 실행 중인 작업을 식별합니다. 이러한 작업이 필요한 것보다 더 오래 실행되면 그 원인을 파악하세요.

sp_help_jobactivity를 사용하여 현재 실행 중인 작업에 대한 정보를 확인합니다.

또는 일부 에이전트 작업이 장기 실행될 것으로 예상되면 다음을 수행합니다.

재정의 가능한 매개 변수

이름

설명

기본값

경고 우선 순위

알림 우선 순위를 정의합니다.

보통

경고 심각도

알림 심각도를 정의합니다.

MatchMonitorHealth

위험 임계값(분)

값이 이 임계값을 초과하는 경우 모니터의 상태가 위험으로 변경됩니다. 이 임계값과 경고 임계값 사이(경계 포함)에서는 모니터가 경고 상태로 유지됩니다.

120

사용

워크플로 사용하거나 사용하지 않도록 설정합니다.

아니요

알림 생성

워크플로에서 알림을 생성하는지 여부를 정의합니다.

지속적으로 실행하는 작업 포함

일부 SQL 에이전트 작업이 에이전트가 중지될 때까지 무한대로 실행될 수 있습니다. 이러한 작업은 일정 유형이 대개 'SQL Server 에이전트가 시작될 때 자동으로 시작'입니다. 예를 들어 SQL Server 복제는 이러한 작업을 사용하는 경우가 많은데, 이들 작업으로 인해 거짓 경고가 발생하고 모니터링을 통해 기본적으로 인식되지 않습니다. 하지만 이러한 작업이 짧은 시간 동안 실행되는 경우는 예외일 수 있습니다. 이러한 작업을 모니터링하려면 작업의 이름 목록을 쉼표로 구분하여 정의해야 합니다.

 

간격(초)

워크플로를 실행하는 반복 시간 간격(초)입니다.

600

동기화 시간

24시간 형식으로 지정된 동기화 시간입니다. 생략될 수 있습니다.

 

시간 제한(초)

여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다.

300

데이터베이스 연결 시간 제한(초)

워크플로는 지정된 기간 동안 데이터베이스에 액세스할 수 없으면 실패하며 이벤트를 등록합니다.

15

경고 임계값(분)

경고 임계값입니다. 이 임계값을 초과하면 모니터가 경고 상태로 변경됩니다.

60

Element properties:

TargetMicrosoft.SQLServer.Windows.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Agent.LongRunningJobs
RemotableTrue
AccessibilityPublic
Alert Message
Windows의 MSSQL: 장기 실행 작업
컴퓨터 {1}에 있는 SQL 인스턴스 {0}에 장기 실행 에이전트 작업이 있습니다. 이것은 하나 이상의 작업에 문제가 있음을 나타낼 수 있습니다.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Agent.LongRunningJobs" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Agent" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Agent.LongRunningJobs" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.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>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<IncludedJobs/>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>