Partilhar via


Problemas de desempenho e consistência quando determinados módulos ou drivers de filtro são carregados

Versão original do produto: SQL Server
Número original do KB: 2033238, 2454053

Sintomas

Considere um dos seguintes cenários:

  • Determinados módulos são carregados no espaço de endereço de processo do SQL Server (Sqlservr.exe).
  • Determinados drivers de filtro são carregados em um sistema que está executando componentes do SQL Server.

Nos cenários, você pode enfrentar problemas de degradação de desempenho e consistência do Mecanismo de Banco de Dados do SQL Server.

  • Relatórios de várias mensagens de erro e condições relacionadas à falta de resposta (mensagem do agendador do SQL Server, como 17883, mensagens de tempo limite do aplicativo, bloqueio severo no SQL Server).
  • Resposta lenta do SQL Server, mesmo que a quantidade simultânea de carga ou atividade não seja extraordinariamente pesada.
  • Exceções (como violações de acesso), mensagens de erro críticas sobre consistência do banco de dados, mensagens de asserção ou encerramento inesperado do processo.
  • 100% de utilização da CPU e longos tempos de recuperação do banco de dados quando você usa tabelas OLTP in-memory no SQL Server.
  • Alto uso de CPU para o processo do SQL Server, especialmente tempo de processador privilegiado.
  • Falhas inesperadas ou inexplicáveis quando os processos do SQL Server fazem chamadas à API do Windows.
  • Os despejos de memória disparados para SQLDumper.exe podem falhar ao concluir, dificultando qualquer atividade de solução de problemas.

Devido à natureza desses problemas, a identificação da causa raiz geralmente requer um tempo significativo de solução de problemas e rastreamento de baixo nível.

Causas

Esses problemas ocorrem devido às seguintes causas para módulos e drivers de filtro.

Módulos (DLLs ou EXEs)

Esses problemas ocorrem porque aplicativos ou outros softwares instalados em um servidor que está executando o SQL Server podem carregar determinados módulos no processo do SQL Server (Sqlservr.exe). Isso pode ser feito para atender a um requisito específico de lógica de negócios, uma funcionalidade aprimorada ou monitoramento de intrusão. Esses módulos podem executar atividades sem suporte que incluem o desvio de APIs importantes do Win32 e rotinas do SQL Server e a chamada de APIs arriscadas. Além disso, alguns problemas intrínsecos nesses módulos podem causar corrupção de várias estruturas de memória necessárias para que o processo do SQL Server funcione corretamente.

A lista de módulos (DLLs) carregados em um determinado processo pode ser obtida por meio de várias ferramentas, como ListDlls ou Process Explorer.

Drivers de filtro

Os drivers de filtro podem ser instalados em um sistema como parte do programa de instalação de um aplicativo para fornecer um determinado tipo de funcionalidade. Os exemplos incluem proteção antivírus, backups online, serviços de criptografia e recursos de compactação ou desfragmentação de dados. Esses drivers de filtro se inserem na pilha de E/S de arquivos do Windows para aprimorar ou alterar o comportamento das solicitações dos sistemas de arquivos.

Em algumas condições, essas solicitações podem levar muito tempo para serem concluídas ou consumir recursos excessivos. Além disso, pode haver alguma forma de incompatibilidade entre os diferentes drivers de filtro presentes na mesma pilha de drivers.

O SQL Server normalmente emite muitas E/Ss do sistema de arquivos (algumas das quais são maiores que a média). Portanto, em comparação com outros aplicativos em execução com menor intensidade de E/S, o problema com os drivers de filtro terá um impacto mais sério no SQL Server.

Observação

Ao contrário das DLLs injetadas, os drivers de filtro (normalmente com extensão .sys) não são visíveis nos detalhes dos processos do usuário porque são entidades do kernel. Você pode usar ferramentas como o fltmc.exe interno do Windows para descobrir 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 essa solução alternativa, mas estamos fornecendo essas informações para que você possa implementá-la a seu próprio critério. Você é responsável pelo uso dessa solução alternativa.

Para contornar esses problemas, identifique o driver de filtro ou o módulo que está causando os problemas. Em seguida, tente todos ou um dos métodos a seguir adequadamente. Para ajudá-lo a identificar o driver de filtro ou o módulo, verifique a lista de alguns drivers e módulos de filtro possíveis para obter mais informações.

  • Entre em contato com o fornecedor do módulo, driver de filtro ou aplicativo para verificar se há atualizações. Aplique todas as atualizações disponíveis.
  • Configure o driver de filtro ou o aplicativo associado de forma que ele não interfira na carga de trabalho ou nas operações do SQL Server.
  • Desative o carregamento do driver do filtro no sistema.
  • Configure o aplicativo para não carregar o módulo específico no processo do SQL Server.
  • Em algumas situações raras, talvez seja necessário remover o módulo ou o driver de filtro e seu aplicativo associado para restaurar a estabilidade do processo do SQL Server e do sistema.

Lista de drivers e módulos de filtro que podem causar os problemas

A lista a seguir ajuda você a identificar os drivers e módulos de filtro que podem causar os problemas de desempenho. Você pode coletar um conjunto iterativo de dados de diagnóstico e rastreamento para os problemas.

  • ENTAPI.DLL

    ENTAPI.DLL é carregado no processo do SQL Server se você instalar o McAfee VirusScan Enterprise em um servidor que esteja executando o Microsoft SQL Server e, em seguida, configurar esse software para monitorar o SQL Server. Quando esse módulo é carregado, APIs importantes do Win 32 também são desviadas dentro do processo do SQL Server. Se você perceber que esse módulo está carregado no processo do SQL Server, configure o McAfee VirusScan Enterprise para excluir Sqlservr.exe de vários monitoramentos avançados, como proteção contra estouro de buffer.

  • HIPI.DLL, HcSQL.DLL, HcApi.DLL e HcThe.DLL

    Esses arquivos DLL serão carregados no processo do SQL Server se você instalar o software McAfee Host Intrusion Prevention no mesmo sistema que o SQL Server. Se você perceber que esse módulo está carregado no processo do SQL Server, configure o McAfee Host Intrusion Prevention para excluí Sqlservr.exe da lista de monitoramento.

  • SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLL e SOPHOS_DETOURED_x64.DLL

    Esses arquivos DLL são carregados no processo do SQL Server se você instalar o programa Sophos Antivirus em um servidor que esteja executando o SQL Server. Se você perceber que esse módulo está carregado no processo do SQL Server, poderá configurar a subchave do Registro AppInit_Dlls para evitar o carregamento desse módulo no processo do SQL Server. Para obter mais informações, consulte AppInit_DLLs no Windows 7 e Windows Server 2008 R2 e DLLs AppInit e Inicialização Segura.

  • PIOLEDB.DLL e PISDK.DLL

    Esses arquivos DLL serão carregados no processo do SQL Server se você usar o provedor OLEDB do PI para acessar dados de um servidor PI ou se usar procedimentos armazenados estendidos que usam o SDK do PI. Se você observar que esses módulos estão carregados no processo do SQL Server, entre em contato com o fornecedor desses módulos para configurar o provedor OLEDB como um provedor fora do processo. Essa configuração ajuda a evitar a necessidade de carregar esses módulos no processo do SQL Server.

  • UMPPC*.DLL e SCRIPTCONTROL*.DLL

    Esses arquivos DLL serão carregados no espaço de endereço dos processos relacionados ao SQL Server se você habilitar a configuração de prevenção de dados do modo de usuário adicional para programas de proteção de ponto de extremidade/antivírus CrowdStrike. Você pode notar falhas enquanto o SQL Server Agent tenta criar novos processos ao executar trabalhos. Você pode encontrar falhas ao tentar iniciar o SQL Server Management Studio. Você também pode ver que o SQL Server falha ao iniciar SQLDumper.exe gerar despejos de memória. Recomendamos que você entre em contato com o suporte da Crowdstrike com informações relacionadas ao seu problema e pergunte se uma correção está disponível.

  • perfiCrcPerfMonMgr.DLL

    Esse arquivo DLL será carregado no processo do SQL Server se você instalar o cliente OfficeScan da Trend Micro. Consulte a configuração da lista de exclusão do editor de software em Lista de exclusão de verificação recomendada para produtos Trend Micro Endpoint.

  • MFEBOPK.SYS

    Esse driver de filtro é usado para o Buffer Overflow Protection recurso no McAfee VirusScan Enterprise. Se você tiver esse recurso ativado, notará que sqlservr.exe está entre a lista de processos protegidos por Buffer Overflow Protection. Se você tiver esse driver de filtro em um sistema que esteja executando o SQL Server, deverá executar as ações especificadas na seção Solução alternativa . Para obter mais informações, consulte Problema de alto impacto: os servidores podem parar de responder devido a vários problemas.

  • NLEMSQL64.SYS e NLEMSQL.SYS

    Este driver de filtro é instalado pelo NetLib Encryptionizer-Software. Quando esse driver de filtro é instalado em um computador que está executando o SQL Server e você executa o backup em um compartilhamento de rede, você pode encontrar falhas que retornam Erro do sistema operacional 1: função incorreta. Para resolver esse problema, entre em contato com o fornecedor do software para obter atualizações para o driver de filtro.

  • MFETDIK.SYS

    Esse driver de filtro é usado para o McAfee Anti-Virus Mini-Firewall recurso nos produtos McAfee VirusScan Enterprise e McAfee McShield. Se você tiver esse recurso ativado, notará que sqlservr.exe está entre a lista de processos monitorados pelo Anti-Virus recurso. Se você tiver esse driver de filtro em um sistema que esteja executando o SQL Server, deverá executar as ações especificadas na seção Solução alternativa . Você também pode considerar adicionar processos do SQL Server à lista de processos de baixo risco na configuração do Antivírus.

Referências

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.