Место в файле базы данных

Microsoft.SQLServer.2005.Monitoring.DBFileSpaceMonitor (UnitMonitor)

Отслеживает свободное место в файле базы данных в процентах от места на носителе, где размещается файл.

Knowledge Base article:

Сводка

Отслеживает свободное место в файле и на носителе, где находится файл. Свободное место на носителе, где размещаются файлы, включается в общее свободное место, только если для этого файла разрешено автоматическое увеличение.

Причины

Неисправное состояние вызывается недостатком свободного места для этого файла. Нехватка доступного места может быть вызвана следующими причинами:

Следующая ссылка позволяет просмотреть данные производительности: Данные производительности о свободном месте для файла базы данных (%)

Автоматическое увеличение не разрешено

Для файла без автоматического увеличения доступное место будет равно разности между начальным размером файла и используемым местом.

Автоматическое увеличение разрешено

При разрешенном автоматическом увеличении доступное место на диске рассматривается как часть доступного места. В дополнение к разности между размером и используемым местом доступное место для файлов с разрешенным автоматическим увеличением будет равно минимуму из двух значений: разность между максимальным размером и размером файла или объем свободного места, оставшегося на диске.

Нехватка доступного места для файлов базы данных с разрешенным автоматическим увеличением может означать, что файл достиг предельных значений для логического диска, на котором он размещен. Для файлов с разрешенным автоматическим увеличением с максимальным размером нехватка доступного места может также означать, что файл достигает максимального размера, заданного для файла.

При вычислениях доступного места нужно учитывать, что увеличить файл не удастся, если размер увеличения файла больше объема оставшегося на диске места, и что файл не может увеличиться, если разность между максимальным размером и текущим размером файла меньше значения увеличения. В таких ситуациях доступное свободное место, оставшееся на диске, не рассматривается как часть доступного места, поскольку файл больше не может увеличиваться.

Решения

Эта проблема может быть устранена следующим образом.

См. электронную документацию по SQL Server. Архитектура файлов и файловых групп

Element properties:

TargetMicrosoft.SQLServer.2005.DBFile
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2005.DBFileSizeMonitorType
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2005.Monitoring.DBFileSpaceMonitor" Accessibility="Public" Enabled="true" Target="SQL2005Core!Microsoft.SQLServer.2005.DBFile" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2005.DBFileSizeMonitorType" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<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/Host/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</SqlInstanceName>
<ObjectName>$Target/Host/Host/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/PerformanceCounterObject$ : Database : DB File</ObjectName>
<CounterName>DB File Free Space (%)</CounterName>
<InstanceName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBFile"]/FileName$</InstanceName>
<DatabaseName>$Target/Host/Host/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
<DBFileId>$Target/Property[Type="SQL!Microsoft.SQLServer.DBFile"]/FileID$</DBFileId>
<Value>$Data/Property[@Name='FreeSpacePercent']$</Value>
<Threshold1>10</Threshold1>
<Threshold2>20</Threshold2>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>