Problemas de desempenho e consistência quando determinados módulos ou controladores de filtro são carregados
Versão original do produto: SQL Server
Número original da BDC: 2033238, 2454053
Sintomas
Considere um dos seguintes cenários:
- Determinados módulos são carregados para o espaço de endereços do processo de SQL Server (Sqlservr.exe).
- Determinados controladores de filtro são carregados para um sistema que está a executar SQL Server componentes.
Nos cenários, poderá deparar-se com problemas de degradação do desempenho e consistência do Motor de Base de Dados do SQL Server.
- Relatórios de várias mensagens e condições de erro relacionadas com não resposta (SQL Server mensagem do agendador, como 17883, mensagens de tempo limite da aplicação, bloqueio severo dentro de SQL Server).
- Resposta lenta de SQL Server mesmo que a quantidade simultânea de carga ou atividade não seja invulgarmente pesada.
- Exceções (como violações de acesso), mensagens de erro críticas sobre consistência da base de dados, mensagens de asserção ou terminação de processo inesperada.
- Utilização da CPU a 100% e tempos de recuperação longos da base de dados quando utiliza In-Memory tabelas OLTP no SQL Server.
- Utilização elevada da CPU para o processo de SQL Server, especialmente o tempo de processador privilegiado.
- Falhas inesperadas ou inexplicáveis quando SQL Server processos efetuam chamadas à API do Windows.
- As capturas de memória acionadas para SQLDumper.exe podem não ser concluídas, o que impede qualquer atividade de resolução de problemas.
Devido à natureza destes problemas, a identificação da causa raiz requer frequentemente tempo de resolução de problemas significativo e rastreio de baixo nível.
Causas
Estes problemas ocorrem devido às seguintes causas para módulos e controladores de filtro.
Módulos (DLLs ou EXEs)
Estes problemas ocorrem porque as aplicações ou outro software instalado num servidor que está a executar SQL Server podem carregar determinados módulos para o processo de SQL Server (Sqlservr.exe). Isto pode ser feito para alcançar um requisito de lógica de negócio específico, uma funcionalidade melhorada ou monitorização de intrusões. Estes módulos podem realizar atividades não suportadas que incluem desviar APIs importantes do Win32 e SQL Server rotinas e chamar APIs de risco. Além disso, alguns problemas intrínsecos nestes módulos podem causar danos em várias estruturas de memória que são necessárias para que o processo SQL Server funcione corretamente.
A lista de módulos (DLLs) carregados num determinado processo pode ser obtida através de várias ferramentas, como ListDlls ou Process Explorer.
Filtrar controladores
Os controladores de filtro podem ser instalados num sistema como parte do programa de Configuração de uma aplicação para fornecer um determinado tipo de funcionalidade. Os exemplos incluem proteção antivírus, cópias de segurança online, serviços de encriptação e instalações de compressão ou desfragmentação de dados. Estes controladores de filtro inserem-se na pilha de E/S de ficheiros do Windows para melhorar ou alterar o comportamento dos pedidos de sistemas de ficheiros.
Em algumas condições, estes pedidos podem demorar muito tempo a concluir ou consumir recursos excessivos. Além disso, pode existir alguma forma de incompatibilidade entre os diferentes controladores de filtro que estão presentes na mesma pilha de controladores.
SQL Server normalmente emite uma grande quantidade de E/S do sistema de ficheiros (alguns dos quais são maiores do que a média). Por conseguinte, em comparação com outras aplicações em execução com menos intensidade de E/S, o problema com os controladores de filtro terá um impacto mais grave na SQL Server.
Observação
Ao contrário das DLLs injetadas, os controladores de filtro (normalmente com .sys extensão) não são visíveis nos detalhes dos processos do utilizador porque são entidades de kernel. Pode utilizar ferramentas como fltmc.exe incorporadas do Windows para detetar minifiltros instalados.
Solução alternativa
Aviso
Essa solução alternativa talvez torne o computador ou a rede mais vulneráveis a ataques de usuários ou software mal-intencionados, como vírus. Não recomendamos esta solução, mas estamos a fornecer estas informações para que possa implementar esta solução a seu critério. Você é responsável pelo uso dessa solução alternativa.
Para contornar estes problemas, identifique o controlador de filtro ou o módulo que está a causar os problemas. Em seguida, experimente todos ou um dos seguintes métodos adequadamente. Para o ajudar a identificar o controlador de filtro ou o módulo, marcar a lista de alguns controladores de filtro e módulos possíveis para obter mais informações.
- Contacte o fornecedor do módulo, controlador de filtro ou aplicação para marcar para obter atualizações. Aplique as atualizações disponíveis.
- Configure o controlador de filtro ou a aplicação associada de forma a não interferir com a carga de trabalho ou as operações SQL Server.
- Desative o carregamento do controlador de filtro para o sistema.
- Configure a aplicação para não carregar o módulo específico para o processo de SQL Server.
- Em algumas situações raras, poderá ter de remover o módulo ou o controlador de filtro e a aplicação associada para restaurar a estabilidade do processo de SQL Server e do sistema.
Lista de controladores de filtro e módulos que podem causar os problemas
A lista seguinte ajuda-o a identificar os controladores de filtro e os módulos que podem causar os problemas de desempenho. Pode recolher um conjunto iterativo de dados de diagnóstico e rastreio para os problemas.
ENTAPI.DLL
ENTAPI.DLL é carregado para o processo de SQL Server se instalar o McAfee VirusScan Enterprise num servidor com o Microsoft SQL Server e, em seguida, configurar este software para monitorizar SQL Server. Quando este módulo é carregado, as APIs importantes do Win 32 também são desviadas dentro do processo de SQL Server. Se reparar que este módulo está carregado para SQL Server processo, configure o McAfee VirusScan Enterprise para excluir Sqlservr.exe de várias monitorizações avançadas, como a proteção contra capacidade excedida da memória intermédia.
HIPI.DLL, HcSQL.DLL, HcApi.DLLe HcThe.DLL
Estes ficheiros DLL são carregados para o processo de SQL Server se instalar o software mcAfee Host Intrusion Prevention no mesmo sistema que SQL Server. Se reparar que este módulo está carregado para SQL Server processo, configure a Prevenção de Intrusões do Anfitrião McAfee para excluir Sqlservr.exe da respetiva lista de monitorização.
SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLLe SOPHOS_DETOURED_x64.DLL
Estes ficheiros DLL são carregados para o processo de SQL Server se instalar o programa Antivírus sophos num servidor que esteja a executar SQL Server. Se reparar que este módulo é carregado para o processo de SQL Server, pode configurar a subchave do registo AppInit_Dlls para evitar carregar este módulo para SQL Server processo. Para obter mais informações, consulte AppInit_DLLs no Windows 7 e Windows Server 2008 R2 e DLLs AppInit e Arranque Seguro.
PIOLEDB.DLL e PISDK.DLL
Estes ficheiros DLL são carregados para o processo de SQL Server se utilizar o fornecedor pi OLEDB para aceder a dados a partir de um servidor PI ou se utilizar procedimentos armazenados alargados que utilizam o SDK PI. Se reparar que estes módulos são carregados para o processo de SQL Server, contacte o fornecedor destes módulos para configurar o fornecedor OLEDB como um fornecedor fora do processo. Esta configuração ajuda a evitar a necessidade de carregar estes módulos para o processo de SQL Server.
UMPPC*.DLL e SCRIPTCONTROL*.DLL
Estes ficheiros DLL são carregados para o espaço de endereços de SQL Server processos relacionados se ativar a definição De prevenção de Dados do Modo de Utilizador Adicional para programas de proteção antivírus/ponto final crowdStrike. Poderá reparar em falhas enquanto SQL Server Agent tenta criar novos processos ao executar tarefas. Poderá deparar-se com falhas ao tentar iniciar SQL Server Management Studio. Também poderá ver que SQL Server falha ao iniciar SQLDumper.exe para gerar capturas de memória. Recomendamos que contacte o suporte do Crowdstrike com informações relacionadas com o seu problema e pergunte se está disponível uma correção.
perfiCrcPerfMonMgr.DLL
Este ficheiro DLL é carregado para o processo de SQL Server se instalar o cliente Trend Micro OfficeScan. Veja a definição da lista de exclusão do fabricante de software na lista Exclusão de análise recomendada para produtos Trend Micro Endpoint.
MFEBOPK.SYS
Este controlador de filtro é utilizado para a
Buffer Overflow Protection
funcionalidade em McAfee VirusScan Enterprise. Se tiver esta funcionalidade ativada, irá reparar que sqlservr.exe está entre a lista de processos protegidos peloBuffer Overflow Protection
. Se tiver este controlador de filtro num sistema que está a executar SQL Server, tem de executar as ações especificadas na secção Solução. Para obter mais informações, veja Problema de Impacto Elevado: Os servidores podem deixar de responder devido a vários problemas.NLEMSQL64.SYS e NLEMSQL.SYS
Este controlador de filtro é instalado pelo NetLib Encryptionizer-Software. Quando este controlador de filtro está instalado num computador com SQL Server e efetua uma cópia de segurança para uma partilha de rede, poderá deparar-se com falhas que devolvem o erro 1 do sistema operativo: Função incorreta. Para resolve este problema, contacte o fornecedor de software para obter atualizações para o controlador de filtro.
MFETDIK.SYS
Este controlador de filtro é utilizado para a
McAfee Anti-Virus Mini-Firewall
funcionalidade nos produtos McAfee VirusScan Enterprise e McAfee McShield. Se tiver esta funcionalidade ativada, irá reparar que sqlservr.exe está entre a lista de processos monitorizados pelaAnti-Virus
funcionalidade. Se tiver este controlador de filtro num sistema que está a executar SQL Server, tem de executar as ações especificadas na secção Solução. Também pode considerar adicionar SQL Server processos à lista de processos de baixo risco na configuração do Antivírus.
Referências
- Tipos de Controladores WDM
- Como desativar temporariamente o controlador de filtro do modo kernel no Windows
- Desvios ou técnicas semelhantes podem causar comportamentos inesperados com SQL Server
- Como executar um objeto COM baseado em DLL fora do processo de SQL Server
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.
Aviso de isenção de responsabilidade para contatos de terceiros
A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.
Aviso de responsabilidade de informações e soluções de terceiros
As informações e a solução contidas neste documento representam a visão atual da Microsoft Corporation a respeito desses problemas na data da publicação. A solução está disponível pela Microsoft ou pelos fornecedores de terceiros. A Microsoft não recomenda especificamente nenhum fornecedor ou solução de terceiros que possam estar descritos neste artigo. É provável que existam fornecedores ou soluções de terceiros não descritos neste artigo. Como a Microsoft deve sempre responder às condições de mercado, essas informações não devem ser interpretadas como um compromisso da Microsoft. A Microsoft não garante ou endossa a precisão de nenhuma informação ou solução apresentada por ela ou por qualquer fornecedor de terceiros mencionado.
A Microsoft não oferece garantias e exclui todas as representações, garantias e condições expressas, implícitas ou legais. Essas condições incluem, mas sem limitações, representações, garantias ou condições de posse, não infringimento, condições satisfatórias, comercialização e adequação a uma finalidade específica em relação a quaisquer serviços, soluções, produtos ou outros materiais ou informações. Em nenhum momento a Microsoft Corporation é responsável pelas soluções dos fornecedores de terceiros mencionadas neste artigo.