O monitor alertará se houver um processo do mecanismo do banco de dados relacional do SQL Server em funcionamento no servidor e se a configuração Limite de Memória Total para a instância do SSAS for maior do que o limite especificado, para garantir que o processo do SQL Server tenha memória suficiente.
O ajuste da configuração Limite de Memória Total do SQL Server Analysis Services deve ser realizado de modo a acomodar as alocações de memória para outros processos no computador.
O mecanismo do banco de dados relacional do SQL Server em particular é o principal exemplo de um processo comum que pode consumir recursos de memória em um computador que também está executando o SSAS e, nessa circunstância, pode levar à concorrência de memória física por consumidores pesados do mesmo recurso corrigido. Isso exige que ambos os serviços de banco de dados estejam configurados para compartilhar memória física suficiente entre si para que cada um realize suas funções necessárias. Se a configuração Limite de Memória Total do SSAS estiver muito alta, o SSAS poderá consumir muita memória, levando ao esgotamento da memória física devido à competição com o mecanismo do banco de dados relacional (ou também com outro processo de alto consumo de memória). O Limite de Memória Total deve ser configurado baixo o suficiente para permitir o consumo de memória configurado do SQL Server, além de uma margem para o sistema operacional e outro consumo de memória do processo comum necessário no computador.
Quando ocorre conflito de configuração de memória, recursos e demandas dos usuários e outros processos devem ser ponderados pelo administrador e a configuração de todos os processos relevantes deve ser ajustada adequadamente. O cenário mais comum para esse tipo de problema em um servidor de banco de dados da Microsoft surgido das instâncias do SSAS do mecanismo do banco de dados relacional do SQL Server. Felizmente, ambos os serviços têm definições de configuração de recursos que podem ser ajustados conforme necessário. Não há uma configuração Limite de Memória Total universalmente correta para o SSAS ou configuração de limite máximo de memória para o mecanismo do banco de dados relacional do SQL, portanto, o limite para esse alerta pode ser ajustado por um administrador para a conta de cada ambiente específico. Quando for encontrada, a condição pode ser atenuada por qualquer uma das várias possíveis abordagens:
Ajuste a configuração de limite máximo de memória da(s) instância(s) do SQL Server para reduzir o consumo desse(s) processo(s).
Diminua a configuração Limite de Memória Total das instâncias do SSAS para reduzir o consumo desse processo.
Aumente a memória disponível no servidor.
Ajuste o limite para o alerta.
Desabilite o alerta, para ocorrências onde ele é determinado como desnecessário por um administrador.
Configuração de memória e considerações de dimensionamento no SQL Server 2016
Documentação TechNet para as propriedades de memória do Analysis Services
Configurar propriedades do servidor no Analysis Services
Documentação TechNet para os Contadores de Desempenho do SSAS
Guia de Desempenho Multidimensional do SSAS
Nome | Descrição | Valor padrão |
Habilitado | Habilita ou desabilita o fluxo de trabalho | Sim |
Gerar Alertas | Define se o fluxo de trabalho gera um Alerta | Sim |
Intervalo em Segundos | O intervalo de tempo recorrente em segundos no qual executa-se o fluxo de trabalho. | 604800 |
Hora da Sincronização | A hora da sincronização especificada usando um formato de 24 horas. Pode ser omitido. |
|
Limite de Aviso (%) | O Estado da Integridade mudará se houver um processo do mecanismo do banco de dados relacional do SQL Server em execução no servidor e se a configuração Limite de Memória Total definida para a instância do SSAS exceder o limite. | 40 |
Tempo limite (segundos) | Especifica o tempo que o fluxo de trabalho pode funcionar antes de ser fechado e marcado como com falha. | 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>