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 de KB original: 2033238, 2454053

Sintomas

Considere um dos seguintes cenários:

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

Nos cenários, você pode enfrentar problemas de degradação e consistência de desempenho do mecanismo de banco de dados SQL Server.

  • Relatórios de várias mensagens de erro e condições relacionadas à não resposta (SQL Server mensagem de agendador, como 17883, mensagens de tempo limite do aplicativo, bloqueio severo em SQL Server).
  • A resposta lenta de 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 de banco de dados, mensagens de declaração ou término inesperado do processo.
  • Utilização de CPU 100% e longos tempos de recuperação de banco de dados quando você usa In-Memory tabelas OLTP no SQL Server.
  • Alto uso de CPU para o processo de SQL Server, especialmente o tempo de processador privilegiado.
  • Falhas inesperadas ou inexplicáveis ao SQL Server processos fazem chamadas de API do Windows.
  • Os despejos de memória disparados para SQLDumper.exe podem não ser concluídos dificultando qualquer atividade de solução de problemas.

Devido à natureza desses problemas, a identificação de causa raiz geralmente requer um tempo de solução de problemas significativo 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 SQL Server podem carregar determinados módulos no processo de SQL Server (Sqlservr.exe). Isso pode ser feito para alcançar um requisito de lógica comercial específico, 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 SQL Server rotinas e chamar 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 SQL Server funcione corretamente.

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

Filtrar drivers

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. Exemplos incluem proteção contra antivírus, backups online, serviços de criptografia e facilidades de compactação ou desfragmentação de dados. Esses drivers de filtro se inserem na pilha de E/S do arquivo Windows para aprimorar ou alterar o comportamento das solicitações de sistemas de arquivos.

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

SQL Server normalmente emite um monte de E/S do sistema de arquivos (alguns dos 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 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 .sys extensão) não são visíveis nos detalhes dos processos do usuário porque são entidades do kernel. Você pode usar ferramentas como fltmc.exe internas 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 implementar essa solução alternativa a seu próprio critério. Você é responsável pelo uso dessa solução alternativa.

Para resolver esses problemas, identifique o driver de filtro ou o módulo que está causando os problemas. Em seguida, experimente todos ou um dos métodos a seguir adequadamente. Para ajudar você a identificar o driver de filtro ou o módulo, marcar a lista de alguns possíveis drivers de filtro e módulos para obter mais informações.

  • Entre em contato com o fornecedor do módulo, do driver de filtro ou do aplicativo para marcar para obter 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 SQL Server.
  • Desabilite o driver de filtro do carregamento no sistema.
  • Configure o aplicativo para não carregar o módulo específico no processo de 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 SQL Server e do sistema.

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

A lista a seguir ajuda você a identificar os drivers de filtro e os módulos que podem causar 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 de SQL Server se você instalar o McAfee VirusScan Enterprise em um servidor que está executando o Microsoft SQL Server e, em seguida, você configurará esse software para monitorar SQL Server. Quando este módulo é carregado, apIs importantes do Win 32 também são desviadas dentro do processo de SQL Server. Se você notar que esse módulo é carregado em SQL Server processo, 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.DLLe HcThe.DLL

    Esses arquivos DLL serão carregados no processo de SQL Server se você instalar o software de prevenção contra intrusão de host do McAfee no mesmo sistema que SQL Server. Se você notar que este módulo é carregado em SQL Server processo, configure a Prevenção de Intrusão de Host da McAfee para excluir Sqlservr.exe de sua lista de monitoramento.

  • SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLLe SOPHOS_DETOURED_x64.DLL

    Esses arquivos DLL serão carregados no processo de SQL Server se você instalar o programa Sophos Antivírus em um servidor que está executando SQL Server. Se você notar que este módulo é carregado no processo SQL Server, você pode configurar a subchave AppInit_Dlls registro para evitar carregar esse módulo em SQL Server processo.

  • PIOLEDB.DLL e PISDK.DLL

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

  • UMPPC*.DLL e SCRIPTCONTROL*.DLL

    Esses arquivos DLL são carregados no espaço de endereço de SQL Server processos relacionados se você habilitar a configuração de prevenção de dados do modo de usuário adicional para programas de proteção contra vírus/ponto de extremidade do CrowdStrike. Você pode notar falhas enquanto SQL Server Agent tenta criar novos processos ao executar trabalhos. Você pode encontrar falhas ao tentar iniciar SQL Server Management Studio. Você também pode ver que SQL Server falha ao iniciar SQLDumper.exe para gerar despejos de memória. Recomendamos que você entre em contato com o suporte do 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 SQL Server se você instalar o cliente Trend Micro OfficeScan. Consulte a configuração da lista de exclusão do editor de software na lista de exclusão de verificação recomendada para produtos do 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 habilitado, perceberá 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 está executando SQL Server, deverá executar as ações especificadas na seção Solução Alternativa. Para obter mais informações, confira Problema de Alto Impacto: os servidores podem ficar sem resposta devido a vários problemas.

  • NLEMSQL64.SYS e NLEMSQL.SYS

    Esse driver de filtro é instalado pelo NetLib Encryptionizer-Software. Quando esse driver de filtro é instalado em um computador que está executando SQL Server e você executa backup em um compartilhamento de rede, você pode encontrar falhas que retornam o erro do sistema operacional 1 : função incorreta. Para resolve esse problema, entre em contato com o fornecedor de 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 habilitado, perceberá 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 está executando SQL Server, deverá executar as ações especificadas na seção Solução Alternativa. Você também pode considerar adicionar processos SQL Server à lista de processos de baixo risco na configuração antivírus.

Referência

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 não se limitam a representações, garantias ou condições de título, não violação, condição satisfatória, comercialização e aptidão para uma finalidade específica, em relação a qualquer serviço, solução, produto ou qualquer outro material ou informação. Em nenhum momento a Microsoft Corporation é responsável pelas soluções dos fornecedores de terceiros mencionadas neste artigo.