Database VertiPaq Size

Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.TabularDatabase.VertipaqSize (UnitMonitor)

This monitor reports a warning when the amount of VertiPaq memory consumed by SSAS tabular databases exceeds the 'Warning Threshold' override (specified in GB). In cases when tabular databases consume more VertiPaq memory than it is allowed by the 'Critical Threshold' override (specified in GB), the monitor throws a critical alert.

Knowledge Base article:

Summary

The amount of VertiPaq memory consumed by SSAS tabular database may grow over time while different portions of data are continuously added from designated data sources.

To be aware of your VertiPaq memory consumption rates, you can use this monitor to track which databases consume most of your VertiPaq capacity.

The monitor reports a warning when the amount of VertiPaq memory consumed by the database exceeds the configured 'Warning Threshold' override expressed as an absolute value in GB.

In cases when tabular databases consume more VertiPaq memory than it is allowed by the 'Critical Threshold' override, the monitor throws a critical alert.

Note that it is recommended to change the default threshold value to some significant number when enabling this monitor.

Causes

Database can approach or exceed the VertiPaq Memory setting under some circumstances. In some cases, a single operation requires memory beyond this limit, and despite the server’s best effort to clear memory from other less immediate tasks, allocations may sometimes necessarily exceed the configured limits, or else the operations must be forced to fail.

This can occur while processing large dimensions or fact data, particularly if there are attributes with data types consuming large amounts of space (e.g. long strings, binary data, etc.) present, or if the dimension contains numerous members. In addition, queries executed on the server may cover very large spaces, particularly if multiple dimensions are being cross-joined, or significant calculations are required to derive results for cells not aggregated previously by a wise administrator, or simply not possible to aggregate in advance.

Resolutions

The resolution may vary depending on what has caused high VertiPaq memory consumption. Make sure to thoroughly investigate each occurrence to determine the real causes. There are numerous approaches administrators can use to fix the issue. Upon considering the underlying activity causing the memory usage, requirements for workload on the server, available resources, and other factors, or consulting Microsoft support, you can do the following:

Overridable Parameters

Name

Description

Default Value

Critical Threshold (GB)

The health state changes to 'Critical' when the 'Database VertiPaq Size' performance counter exceeds the value specified in the 'Warning Threshold' override. Make sure to change the default value to some significant number when enabling this monitor.

0

Enabled

Enables or disables the workflow.

No

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 (GB)

The health state changes to 'Warning' if the 'Database VertiPaq Size' performance counter exceeds the value specified in the 'Warning Threshold' override but is lower than the 'Critical Threshold' override. Make sure to change the default value to some significant number when enabling this monitor.

0

Element properties:

TargetMicrosoft.SQLServer.AnalysisServices.Windows.TabularDatabase
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Database.VertipaqMemorySize
RemotableTrue
AccessibilityPublic
Alert Message
SSAS: Tabular database consumes too much VertiPaq memory
Tabular database "{0}" consumes too much VertiPaq memory. Memory consumption: {1} GB
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.TabularDatabase.VertipaqSize" Accessibility="Public" Enabled="false" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.AnalysisServices.Windows.TabularDatabase" TypeID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Database.VertipaqMemorySize" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.TabularDatabase.DatabaseVertipaqSize.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Database']/DatabaseName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='DatabaseVertipaqMemoryGB']$</AlertParameter2>
</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>
<CriticalThreshold>0</CriticalThreshold>
<WarningThreshold>0</WarningThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>