The monitor alerts if there is a SQL Server relational database engine process running on the server, and the 'Total Memory Limit' configuration for the SSAS instance is higher than the specified threshold. This is done to ensure that the SQL Server process has sufficient memory.
SQL Server Analysis Services Total Memory Limit configuration setting should be adjusted accordingly to accommodate memory allocations for other processes on the computer.
SQL Server relational database engine in particular is a primary example of a common process that can consume memory resources on a computer also running SSAS, and in this circumstance, it can lead to competition for physical memory by both heavy consumers of the same fixed resource. This requires both database services to be configured to share sufficient physical memory in order to perform their required functions. If SSAS Total Memory Limit configuration is too high, then SSAS may consume excessive memory, which may lead to exhaustion of physical memory, due to competition with the relational database engine (or with other high memory consuming processes in fact also). Total Memory Limit should be configured sufficiently low to allow SQL Server’s configured memory consumption, plus a margin for the operating system and other typical process memory consumption that is essential on a computer.
When memory configuration conflicts occur, resources and demands of the users and other processes must be considered by the administrator, and then the configuration of all relevant processes must be adjusted accordingly. The most common scenario for this type of problem on a Microsoft database server arise from SSAS instance(s) and from SQL Server relational database engine. Fortunately, both services provide feature configuration settings that can be adjusted as necessary. There is no universal Total Memory Limit setting for SSAS, or 'Max Memory' limit setting for the SQL relational database engine; so, the threshold for this alert can be adjusted by the administrator to account for each specific environment. When it is encountered, the condition may be alleviated by any of the following potential approaches:
Adjust the SQL Server instance(s) 'Max Memory' limit setting to reduce consumption by those process(es).
Lower SSAS instance(s) 'Total Memory Limit' configuration setting to reduce consumption by those process(es).
Increase available memory on the server.
Adjust the threshold for the alert.
Disable the alert, for cases wherein it is determined to be unnecessary by the administrator.
TechNet documentation for Analysis Services memory properties
Configure Server Properties in Analysis Services
TechNet documentation for SSAS Performance Counters
Name | Description | Default Value |
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. | 604800 |
Synchronization Time | The synchronization time specified by using a 24-hour format. May be omitted. |
|
Warning Threshold (%) | Health state changes if there is a SQL Server relational database engine process running on the server and the 'Total Memory Limit' configuration setting for SSAS instance exceeds the threshold. | 40 |
Timeout (seconds) | Specifies the time the workflow is allowed to run before being closed and marked as failed. | 300 |
Target | Microsoft.SQLServer.AnalysisServices.Windows.Instance | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | ConfigurationHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Instance.ConfigurationConflictWithSQLServer | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.Instance.ConfigurationConflictWithSQLServer" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.AnalysisServices.Windows.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Instance.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.Instance.ConfigurationConflictWithSQLServer.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='MemoryLimitHighGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MemoryLeavesForOsGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='TotalPhysicalMemoryGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='MemoryUsageGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='MemoryUsageByOtherProcessGB']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='UsedPhysicalMemoryGB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='MemoryLimitLowGB']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='MemoryLimitLowPercent']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='MemoryLimitHighPercent']$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Warning" MonitorTypeStateID="ConfigurationConflict" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="NoConfigurationConflict" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>40</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>