미디어의 이미 할당된 공간 및 사용 가능한 공간을 모두 포함한 사용 가능한 공간이 데이터 크기 및 사용 가능한 디스크 공간의 합계 비율로 표현되는 경고 임계값 설정 아래로 떨어질 경우 모니터가 경고를 보고합니다. 사용 가능한 공간이 위험 임계값 아래로 떨어질 경우 모니터가 중요한 알림을 보고합니다.
모니터는 로그 파일 및 로그 파일을 호스트하는 미디어의 사용 가능한 공간을 감독합니다. 하나 이상의 파일에 대해 자동 증가를 사용하도록 설정한 경우 사용 가능한 공간의 일부로 미디어의 사용 가능한 공간이 고려됩니다.
모든 로그 파일에서 사용 가능한 공간이 부족하면 비정상 상태가 유발됩니다. 부족한 사용 가능 공간은 다음과 같은 요인으로 인해 발생할 수 있습니다.
부적합한 파일 구성 설정(크기, 최대 크기, 자동 증가 등)
미디어의 여유 공간 부족
주기적인 정기 백업 미실시
잘리지 않는 로그
다음 링크를 통해 성능 데이터를 확인합니다. DB 파일 로그 사용 가능 공간 성능 데이터
이 모니터는 다음과 같은 각 파일의 구성에 따라 데이터베이스 내의 각 로그 파일에 사용할 수 있는 공간을 집계합니다.
자동 증가 없음
자동 증가가 없는 파일의 경우 사용 가능한 공간은 파일의 초기 크기와 사용 중인 공간의 차이가 됩니다.
자동 증가 사용
파일 크기와 사용 중인 공간의 차이 이외에도 자동 증가가 설정된 파일에 사용할 수 있는 공간은 최대 크기와 파일 크기의 차이 또는 최대 크기와 디스크에 남아 있는 사용 가능한 공간의 차이 중 최소값이 됩니다.
자동 증가가 설정된 데이터베이스 파일에 사용 가능한 공간이 부족한 것은 파일이 호스팅 논리 드라이브의 제한에 도달하고 있음을 의미할 수 있습니다. 또한 최대 크기와 자동 증가가 함께 설정된 파일의 경우 부족한 사용 가능 공간은 해당 파일에 대해 지정된 최대 크기에 도달하고 있는 것일 수 있습니다.
사용 가능한 공간을 계산할 때 파일의 증가량이 디스크에 남아 있는 양보다 큰 경우 파일이 증가할 수 없으며 최대 크기와 현재 파일 크기의 차이가 증가량보다 작은 경우 파일이 증가할 수 없다는 사실도 고려합니다. 이러한 경우 더 이상 증가할 수 없으므로 디스크에 남아 있는 사용 가능한 공간은 사용 가능한 공간의 일부분으로 포함되지 않습니다.
이 문제는 다음을 수행하여 해결할 수 있습니다.:
자동 증가가 설정되지 않은 경우 로그 파일의 할당된 크기 증가
자동 증가가 설정된 경우 로그 파일의 최대 크기 값 증가
하나 이상의 파일에 대해 자동 증가 사용
증가 공간이 제한된 경우 사용 가능한 공간이 더 많은 다른 드라이브로 로그 파일 이동
FULL 및 BULK-LOGGED 복구 모드에 대한 로그 파일의 정기 백업 수행
로그가 잘리지 않는 다음과 같은 이유를 조사합니다.
장기 실행 중인 열려 있는 활성 트랜잭션
장기 실행 중인 백업 작업
오랜 기간 동안 열려 있는 복제된 트랜잭션(트랜잭션 복제)
주 서버보다 오래된 미러(데이터베이스 미러링)
이 모니터가 작업에 알맞도록 임계값 수정
또는 데이터베이스에서 로그 파일의 사용 가능한 공간이 별로 중요하지 않을 경우 다음을 수행합니다.
이 특정 데이터베이스 또는 모든 데이터베이스에 대해 이 모니터 비활성화
SQL Server 온라인 설명서 참조: 파일 및 파일 그룹 아키텍처
이름 | 설명 | 기본값 |
경고 우선 순위 | 알림 우선 순위를 정의합니다. | 보통 |
경고 심각도 | 알림 심각도를 정의합니다. | 오류 |
Azure 최대 파일 크기(MB) | Azure BLOB Storage에 저장되는 데이터 파일의 최대 크기입니다. 워크플로는 이 값을 각 파일의 최대 저장 용량으로 간주합니다. | 1048576 |
위험 임계값 | 값이 이 임계값 아래로 떨어지면 모니터의 상태가 위험으로 변경됩니다. 이 임계값과 경고 임계값(포함) 사이에 있으면 모니터가 경고 상태가 됩니다. | 10 |
사용 | 워크플로 사용하거나 사용하지 않도록 설정합니다. | 예 |
알림 생성 | 워크플로에서 알림을 생성하는지 여부를 정의합니다. | 아니요 |
간격(초) | 워크플로를 실행하는 반복 시간 간격(초)입니다. | 900 |
동기화 시간 | 24시간 형식으로 지정된 동기화 시간입니다. 생략될 수 있습니다. |
|
시간 제한(초) | 여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다. | 300 |
데이터베이스 연결 시간 제한(초) | 워크플로는 지정된 기간 동안 데이터베이스에 액세스할 수 없으면 실패하며 이벤트를 등록합니다. | 15 |
경고 임계값 | 값이 이 임계값 아래로 떨어지면 모니터의 상태가 경고로 변경됩니다. | 20 |
Target | Microsoft.SQLServer.Linux.DBLogFile | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Linux.MonitorType.DBLogFile.DBLogFileSpace | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.DBLogFile.DBLogFileSpace" Accessibility="Public" Enabled="true" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBLogFile" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.DBLogFile.DBLogFileSpace" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.Monitor.DBLogFile.DBLogFileSpace.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter3>
<AlertParameter4>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='FreeSpaceMB']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='FreeSpacePercent']$</AlertParameter6>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Error"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<FileName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</FileName>
<AzureMaxFileSizeMB>1048576</AzureMaxFileSizeMB>
<ValuePropertyName>FreeSpacePercent</ValuePropertyName>
<Threshold1>10</Threshold1>
<Threshold2>20</Threshold2>
<ConnectionString>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>