데이터베이스 및 해당 데이터베이스를 호스팅하는 미디어에서 사용 가능한 공간(\%)을 모니터링합니다. 참고: 이 모니터는 기본적으로 사용하지 않도록 설정되어 있습니다. 필요한 경우 사용하도록 설정하려면 재정의를 사용하세요. 이 모니터는 FILESTREAM 및 메모리 액세스에 최적화된 데이터 파일 그룹에 사용 가능한 공간은 계산하지 않습니다.
데이터베이스 및 데이터베이스를 호스팅하는 미디어에서 사용 가능한 공간을 모니터링합니다. 데이터베이스를 호스팅하는 미디어에서 사용 가능한 공간은 하나 이상의 파일에 자동 증가가 설정되어 있는 경우에만 사용 가능한 공간의 일부분으로 포함됩니다. 이 모니터는 FILESTREAM 및 메모리 액세스에 최적화된 데이터 파일 그룹에 사용 가능한 공간을 계산하지 않습니다.
모든 데이터베이스 파일에서 사용 가능한 공간이 부족하면 비정상 상태가 유발됩니다. 부족한 사용 가능 공간은 다음과 같은 요인으로 인해 발생할 수 있습니다.
부적합한 파일 구성 설정(크기, 최대 크기, 자동 증가 등)
미디어의 여유 공간 부족
다음 링크를 통해 성능 데이터를 확인합니다. 데이터베이스 성능 데이터
이 모니터는 다음과 같은 각 파일의 구성에 따라 데이터베이스 내의 각 파일에 사용할 수 있는 공간을 집계합니다.:
자동 증가 없음
자동 증가가 없는 파일의 경우 사용 가능한 공간은 파일의 초기 크기와 사용 중인 공간의 차이가 됩니다.
자동 증가 설정
파일 크기와 사용 중인 공간의 차이 이외에도 자동 증가가 설정된 파일에 사용할 수 있는 공간은 최대 크기와 파일 크기의 차이 또는 최대 크기와 디스크에 남아 있는 사용 가능한 공간의 차이 중 최소값이 됩니다.
자동 증가가 설정된 데이터베이스 파일에 사용 가능한 파일이 부족한 것은 파일이 호스팅 논리 드라이브의 제한에 도달하고 있음을 의미할 수 있습니다. 또한 최대 크기와 자동 증가가 함께 설정된 파일의 경우 부족한 사용 가능 공간은 해당 파일에 대해 지정된 최대 크기에 도달하고 있는 것일 수 있습니다.
사용 가능한 공간을 계산할 때 파일의 증가량이 디스크에 남아 있는 양보다 큰 경우 파일이 증가할 수 없으며 최대 크기와 현재 파일 크기의 차이가 증가량보다 작은 경우 파일이 증가할 수 없다는 사실도 고려합니다. 이러한 경우 더 이상 증가할 수 없으므로 디스크에 남아 있는 사용 가능한 공간은 사용 가능한 공간의 일부분으로 포함되지 않습니다.
이 문제는 다음을 수행하여 해결할 수 있습니다.:
자동 증가가 설정되지 않은 경우 파일 그룹 내의 파일 또는 모든 파일의 할당된 크기 증가
자동 증가가 설정된 경우 파일의 최대 크기 값 증가
하나 이상의 파일에 대한 자동 증가 설정
증가 공간이 제한된 경우 사용 가능한 공간이 더 많은 다른 드라이브로 파일 이동
이 모니터가 작업에 알맞도록 임계값 수정
또는 데이터베이스에서 총 DB 공간이 별로 중요하지 않을 경우 다음을 수행합니다.:
이 특정 파일 그룹 또는 모든 파일 그룹에 대해 이 모니터 비활성화
SQL Server 온라인 설명서 참조: 파일 및 파일 그룹 아키텍처
이름 | 설명 | 기본값 |
알림 우선 순위 | 알림 우선 순위를 정의합니다. | 높음 |
알림 심각도 | 알림 심각도를 정의합니다. | MatchMonitorHealth |
Azure 최대 파일 크기(MB) | Azure BLOB 저장소에 저장되는 데이터 파일의 최대 크기입니다. 워크플로는 이 값을 각 파일의 최대 저장 용량으로 간주합니다. | 1048576 |
위험 임계값 | 값이 이 임계값 아래로 떨어지면 모니터의 상태가 위험으로 변경됩니다. 이 임계값과 경고 임계값(포함) 사이에 있으면 모니터가 경고 상태가 됩니다. | 10 |
사용 | 워크플로를 사용하거나 사용하지 않도록 설정합니다. | 아니요 |
알림 생성 | 워크플로가 알림을 생성하는지를 정의합니다. | 예 |
간격(초) | 워크플로를 실행하는 반복 시간 간격(초)입니다. | 900 |
동기화 시간 | 24시간 형식으로 지정된 동기화 시간입니다. 생략될 수 있습니다. |
|
제한 시간(초) | 워크플로를 닫고 실패로 표시하기 전에 워크플로를 실행할 수 있는 시간을 지정합니다. | 300 |
경고 임계값 | 값이 이 임계값 아래로 떨어지면 모니터의 상태가 경고로 변경됩니다. | 20 |
Target | Microsoft.SQLServer.2016.Database | ||
Parent Monitor | Microsoft.SQLServer.2016.Database.DBSpaceMonitor | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | High | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.DBAndLogSizeMonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2016.Database.DBSizePercentMonitor" Accessibility="Public" Enabled="false" Target="SQL2016Core!Microsoft.SQLServer.2016.Database" ParentMonitorID="Microsoft.SQLServer.2016.Database.DBSpaceMonitor" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.DBAndLogSizeMonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Database.DBSizePercentMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
</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>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ConnectionString>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</SqlInstanceName>
<ObjectName>SQL Database</ObjectName>
<CounterName>DB Available Space Total (%)</CounterName>
<InstanceName/>
<DatabaseName>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</DatabaseName>
<Value>$Data/Property[@Name='DBFreeSpacePercent']$</Value>
<Threshold1>10</Threshold1>
<Threshold2>20</Threshold2>
<TimeoutSeconds>300</TimeoutSeconds>
<AzureMaxFileSizeMB>1048576</AzureMaxFileSizeMB>
</Configuration>
</UnitMonitor>