DB File Space (rollup)

Microsoft.SQLServer.2016.DBFileGroup.DBFileSpaceMonitorRollUp (DependencyMonitor)

The monitor oversees the space available in all Filegroups in the database and on related media. The space available on the media hosting files is only included as part of the free space if autogrowth is enabled for at least one file. This monitor is a dependency (rollup) monitor.

Knowledge Base article:

Summary

Note: This monitor is a dependency (rollup) monitor. The health state for this monitor is determined by the best state of any member monitor. Please also review the knowledge base article for related unit monitors.

The monitor oversees the space available in all Filegroups in the database and on related media. The space available on the media hosting files is only included as part of the space available if autogrowth is enabled for at least one file. This monitor is a dependency (rollup) monitor.

Causes

An unhealthy state is caused by having low available for this Filegroup. Low free space can be caused by:

Use the following link to view the performance data: DB Filegroup Free Space Performance Data

No Autogrowth

For a file that is not configured to grow automatically, free space would be the difference between the size of the file and the used space (size of the data stored in the file).

Autogrowth Enabled

With autogrowth enabled, the available disk space is included as part of the free space. In addition to the difference between the file size and the used space, the free space for files with autogrowth enabled also includes the free space on the media (but not more than the difference between file max size and current file size).

Low free space for database files that have autogrowth could mean that the file is approaching the limits of the hosting logical drive. For files with autogrowth enabled with a max size, low free space could also mean that the file is approaching the max size specified for a file.

The free space calculations also take into account that the file can also fail to grow if the file growth step (in MB or %) is greater than the free space available on the media. The same logics applies to files, which have their growth limited by max size setting. In these situations, available free space left on disk is not included as part of the free space because further file expansion is impossible.

Resolutions

This issue may be resolved by either:

See SQL Server Books Online: Files and Filegroups Architecture

Overrideable Parameters

Name

Description

Default Value

Alert Priority

Defines Alert Priority.

Normal

Alert Severity

Defines Alert Severity.

MatchMonitorHealth

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Element properties:

TargetMicrosoft.SQLServer.2016.DBFileGroup
Parent MonitorMicrosoft.SQLServer.2016.Database.DBFileGroupSpaceMonitor
AlgorithmBestOf
Source MonitorMicrosoft.SQLServer.2016.Monitoring.DBFileSpaceMonitor
RelationshipMicrosoft.SQLServer.2016.DBFileGroupHostsDBFile
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: Filegroup is running out of space
The Filegroup "{0}" for the database "{1}" in SQL instance "{2}" on computer "{3}" is running out of space. See knowledge section for more details.

Source Code:

<DependencyMonitor ID="Microsoft.SQLServer.2016.DBFileGroup.DBFileSpaceMonitorRollUp" Accessibility="Public" Enabled="true" Target="SQL2016Core!Microsoft.SQLServer.2016.DBFileGroup" ParentMonitorID="Microsoft.SQLServer.2016.Database.DBFileGroupSpaceMonitor" Remotable="true" Priority="Normal" RelationshipType="SQL2016Core!Microsoft.SQLServer.2016.DBFileGroupHostsDBFile" MemberMonitor="Microsoft.SQLServer.2016.Monitoring.DBFileSpaceMonitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.DBFileGroup.DBFileSpaceMonitorRollUp.AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.FileGroup"]/GroupName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter3>
<AlertParameter4>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<Algorithm>BestOf</Algorithm>
<MemberUnAvailable>Error</MemberUnAvailable>
</DependencyMonitor>