Database Free Space

Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.MultidimensionalDatabase.FreeSpace (UnitMonitor)

The monitor reports a warning when the available disk space for the SSAS multidimensional database storage folder drops below the 'Warning Threshold' setting expressed as percentage of the sum of the estimated database storage folder size plus disk free space. The monitor reports a critical alert, when the available space drops below 'Critical Threshold'. The monitor does not take into account partitions located in folders other than the DB storage folder.

Knowledge Base article:

Summary

SSAS multidimensional database folder typically grows over time, while the data is being continuously added from data warehouse sources for the most typical applications of the server. Therefore, the administrators would like to monitor the issue to be sure that there is always sufficient space left in the storage location for the database folder. Note that the administrators would also wish to monitor the available space in partition folders, which can be configured outside the database folder directory structure. Those folders are not monitored by this rule, but rather by SSAS Partition Storage Available Space Monitor.

Causes

When the available disk space on the drive, where the database storage location is configured, becomes too low, some failures may occur, jeopardizing successful data processing, delaying user’s queries, or affecting other applications as well, which share the same allocation of disk space. This appears to be unhealthy for the server. Consequently, it is important to monitor the issue, and ensure that a sufficient margin of available space remains to avoid costly and time-consuming processing failures, which may incur production outages or delays. It is especially actual for dimensions or measure groups that tend to grow quickly over time.

Resolutions

The resolution(s) for low available disk space depend upon the root causes, which must be investigated in each case, when this issue occurs. The condition may be alleviated by any of the following potential approaches:

External

Configure Server Properties in Analysis Services

TechNet documentation for SSAS Performance Counters

Overridable Parameters

Name

Description

Default Value

Critical Threshold (%)

Health state changes to 'Critical' when the 'Database Free Space (%)' performance counter drops below the threshold.

5

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Interval Seconds

The recurring interval of time in seconds in which to run the workflow.

900

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

 

Timeout (seconds)

Specifies the time the workflow is allowed to run before being closed and marked as failed.

300

Warning Threshold (%)

Health state changes to 'Warning' if the 'Database Free Space (%)' performance counter drops below the threshold, but is still higher than Critical Threshold (%).

10

Element properties:

TargetMicrosoft.SQLServer.AnalysisServices.Windows.MultidimensionalDatabase
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Database.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS: Insufficient Database Free Space
Only {4}\% of free space is available for the SSAS multidimensional instance database folder "{2}", which is less than the configured threshold.
Storage location: {2}
Disk size: {1} GB
Database free space: {5} GB ({4}\%)
Database folder size: {3} GB
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.MultidimensionalDatabase.FreeSpace" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.AnalysisServices.Windows.MultidimensionalDatabase" TypeID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Database.FreeSpacePercent" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.MultidimensionalDatabase.DatabaseFreeSpace.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='UsedOnDatabaseDriveGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='TotalOnDatabaseDriveGB']$</AlertParameter2>
<AlertParameter3>$Target/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Database']/StorageLocation$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='DatabaseDefaultForlderSizeGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='DatabaseFreeSpacePercent']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='DatabaseFreeSpaceGB']$</AlertParameter6>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Above" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="Below" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Host/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Instance']/ServiceName$</ServiceName>
<DatabaseName>$Target/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Database']/DatabaseName$</DatabaseName>
<ConnectionString>$Target/Host/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Instance']/ConnectionString$</ConnectionString>
<DataDir>$Target/Host/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Instance']/DataDir$</DataDir>
<CriticalThreshold>5</CriticalThreshold>
<WarningThreshold>10</WarningThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>