El monitor genera una alerta si se está ejecutando un proceso de motor de base de datos relacional de SQL Server en el servidor y la configuración del límite de memoria total para la instancia de SSAS es superior al umbral especificado, a fin de garantizar que el proceso de SQL Server tenga suficiente memoria.
El valor de configuración del límite de memoria total de SQL Server Analysis Services se debe ajustar correspondientemente para que admita asignaciones de memoria para otros procesos del equipo.
El motor de base de datos relacional de SQL Server en particular es un ejemplo principal de un proceso común que puede consumir recursos de memoria en un equipo que también ejecute SSAS y, en estas circunstancias, puede provocar una competición por la memoria física por parte de ambos consumidores masivos del mismo recurso fijo. Esto requiere que ambos servicios de base de datos se configuren para compartir suficiente memoria física para llevar a cabo las funciones requeridas. Si el valor configurado del límite de memoria total de SSAS es demasiado elevado, puede que SSAS consuma demasiada memoria y se agote la memoria física debido a la competición con el motor de base de datos relacional (o con otros procesos que también consuman mucha memoria). El límite de memoria total se debe configurar suficientemente bajo para permitir el consumo de memoria configurado de SQL Server más un margen para el consumo de memoria del sistema operativo y otros procesos típicos que es esencial para el equipo.
Cuando se producen conflictos de configuración de memoria, el administrador debe evaluar los recursos y las demandas de los usuarios y otros procesos y ajustar la configuración de todos los procesos relevantes como corresponda. El escenario más común para este tipo de problema en un servidor de bases de datos de Microsoft procede de las instancias de SSAS y del motor de base de datos relacional de SQL Server. Afortunadamente, ambos servicios cuentan con opciones de configuración de características que se pueden ajustar según sea necesario. No hay ninguna opción de configuración de límite de memoria total para SSAS ni de límite de memoria máximo para el motor de base de datos relacional de SQL universalmente correcta, de modo que el administrador puede ajustar el umbral de esta alerta para adaptarlo a cada entorno específico. Una vez detectada, existen varios métodos posibles que pueden paliar esta situación:
Ajuste la configuración del límite de memoria máximo de las instancias de SQL Server para reducir el consumo por parte de estos procesos.
Reduzca el valor de configuración del límite de memoria bajo de las instancias de SSAS para reducir el consumo mediante estos procesos.
Aumente la memoria disponible en el servidor.
Ajuste el umbral para la alerta.
Deshabilite la alerta en los casos en que el administrador determine que es innecesaria.
Configuración de la memoria y consideraciones del tamaño en SQL Server 2016
Documentación de TechNet para las propiedades de memoria de Analysis Services
Configurar las propiedades del servidor en Analysis Services
Documentación de TechNet para los contadores de rendimiento de SSAS
Guía sobre rendimiento multidimensional de SSAS
Nombre | Descripción | Valor predeterminado |
Habilitado | Habilita o deshabilita el flujo de trabajo | Sí |
Genera alertas | Define si el flujo de trabajo genera una alerta | Sí |
Intervalo (segundos) | Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo. | 604800 |
Hora de sincronización | Hora de sincronización especificada en un formato de 24 horas. Se puede omitir. |
|
Umbral de advertencia (%) | El estado cambia si se está ejecutando un proceso de motor de base de datos relacional de SQL Server en el servidor y la configuración del límite de la memoria total para la instancia de SSAS es superior al umbral. | 40 |
Tiempo de espera (segundos) | Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error. | 300 |
Target | Microsoft.SQLServer.2016.AnalysisServices.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.2016.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.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>