트랜잭션 로그 사용 가능한 공간(\%)

Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor (UnitMonitor)

2012 DB의 트랜잭션 로그 사용 가능한 공간(\%) 모니터

Knowledge Base article:

요약

SQL 2012 DB의 트랜잭션 로그 사용 가능한 공간(%) 모니터

원인

모든 로그 파일에서 사용 가능한 공간이 부족하면 비정상 상태가 유발됩니다. 부족한 사용 가능 공간은 다음과 같은 요인으로 인해 발생할 수 있습니다.

다음 링크를 통해 성능 데이터를 확인합니다.

데이터베이스 성능 데이터

이 모니터는 다음과 같은 각 파일의 구성에 따라 데이터베이스 내의 각 로그 파일에 사용할 수 있는 공간을 집계합니다.

자동 증가 없음

자동 증가가 없는 파일의 경우 사용 가능한 공간은 파일의 초기 크기와 사용 중인 공간의 차이가 됩니다.

자동 증가 설정

파일 크기와 사용 중인 공간의 차이 이외에도 자동 증가가 설정된 파일에 사용할 수 있는 공간은 최대 크기와 파일 크기의 차이 또는 최대 크기와 디스크에 남아 있는 사용 가능한 공간의 차이 중 최소값이 됩니다.

자동 증가가 설정된 데이터베이스 로그 파일에 사용 가능한 공간이 부족한 것은 파일이 호스팅 논리 드라이브의 제한에 도달하고 있음을 의미할 수 있습니다. 또한 최대 크기와 자동 증가가 함께 설정된 파일의 경우 부족한 사용 가능 공간은 파일이 파일에 대해 지정된 최대 크기에 도달하고 있는 것일 수 있습니다.

사용 가능한 공간을 계산할 때는 파일의 증가량이 디스크에 남아 있는 양보다 큰 경우 파일이 증가할 수 없으며 최대 크기와 현재 파일 크기의 차이가 증가량보다 작은 경우 파일이 증가할 수 없다는 사실도 고려합니다. 이러한 경우 더 이상 증가할 수 없으므로 디스크에 남아 있는 사용 가능한 공간은 사용 가능한 공간의 일부분으로 포함되지 않습니다.

해결 방법

이 문제는 다음을 수행하여 해결할 수 있습니다.

SQL Server 온라인 설명서 참조: 파일 및 파일 그룹 아키텍처

재정의 가능한 매개 변수

이름

설명

기본값

알림 우선 순위

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

보통

알림 심각도

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

오류

사용

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

아니요

알림 생성

워크플로가 알림을 생성하는지를 정의합니다.

간격(초)

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

900

임계값

임계값 변경

10

제한 시간(초)

워크플로가 닫히고 실패한 항목으로 표시될 때까지 실행이 허용되는 시간을 지정합니다.

300

Element properties:

TargetMicrosoft.SQLServer.2012.Database
Parent MonitorMicrosoft.SQLServer.2012.Database.DBSpaceMonitor
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Database.TransactionLogSpaceFreePercent.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL DB 2012 트랜잭션 로그 사용 가능한 공간(\%)이 너무 낮음
컴퓨터 "{2}"의 SQL 인스턴스 "{1}"에서 데이터베이스 "{0}"의 트랜잭션 로그 사용 가능한 공간(\%)이 너무 낮습니다. 자세한 내용은 "경고 컨텍스트" 탭을 참조하십시오.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor" Accessibility="Public" Enabled="false" Target="SQL2012Core!Microsoft.SQLServer.2012.Database" ParentMonitorID="Microsoft.SQLServer.2012.Database.DBSpaceMonitor" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercent.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<Threshold>10</Threshold>
<ConnectionString>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</SqlInstanceName>
<ObjectName>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/PerformanceCounterObject$:TransactionLog</ObjectName>
<CounterName>Log Free Space (%)</CounterName>
<InstanceName/>
<DatabaseName>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
<Value>$Data/Property[@Name='DBLogFreeSpacePercent']$</Value>
</Configuration>
</UnitMonitor>