Recentemente notei uma mensagem de erro em meu log de erros do SQL Server que dizia "O processador de consulta ficou sem recursos internos e não pôde produzir um plano de consulta." Suspeito que meu servidor esteja ficando sem memória ou recursos de CPU. No entanto, não tenho certeza de como confirmar isso.
Estou ciente dos comandos sysprocesses e sp_whoisactive, mas não tenho certeza se eles podem me dizer se meu servidor está ficando sem recursos neste momento.
Alguém poderia me fornecer algumas orientações sobre como verificar se meu SQL Server está ficando sem memória ou recursos de CPU? Qualquer ajuda seria apreciada.
A mensagem de erro completa pode ser lida:
Isso pode não ser devido à falta de recursos no sentido convencional (RAM, CPU, IO, ...), mas mais um problema isolado com uma consulta que afeta os recursos de processamento interno do Mecanismo de Banco de Dados do SQL Server. .
Razões possíveis
Existem vários motivos pelos quais você pode receber essa mensagem de erro. Vou listar alguns:
Suas consultas são muito complexas e contêm várias
UNION
cláusulas que unem vários conjuntos de resultados em uma grande tabela que deve ser retornada ao cliente.¨por exemplo
Suas consultas contêm várias subconsultas e estão esgotando os recursos internos.
por exemplo
Incluir explicitamente um número extremamente grande de valores (muitos milhares de valores separados por vírgulas) entre parênteses em uma cláusula IN pode consumir recursos e retornar erros 8623 ou 8632. Para contornar esse problema, armazene os itens na lista IN em um tabela e use uma subconsulta SELECT dentro de uma cláusula IN.
Referência: IN (Transact-SQL) (Microsoft Learn | SQL )
Soluções
Reduza o número de cláusulas UNION.
Reduza o número de subconsultas em sua instrução complexa.
Reduza o número de elementos na
WHERE <column> IN (<value1>, <value2>, ... <value999>)
cláusula. Por favor, considere também o conselho dado pela Microsoft:Respondendo à sua (outra) pergunta
Essa é uma pergunta bastante genérica. Encontrar as declarações que estão esgotando os recursos internos pode ser sua melhor opção. (Veja minha explicação inicial inicial no topo)
Se você não tem uma linha de base de como seu SQL Server normalmente executa e quais recursos estão em uso, como você saberia se seu SQL Server está esgotando todos os recursos? Considere dar uma olhada na categoria Baseline em SQLSkills.
OK. A configuração da RAM pode ser um problema.
Experimente o kit de primeiros socorros fornecido por Brent Ozar para ver o que realmente está acontecendo AGORA!
Poste mais detalhes na sua pergunta. Para fornecer uma resposta mais detalhada, precisaríamos de mais informações em sua pergunta.
Considere contratar um consultor. Não eu não...