Проблемы производительности и согласованности при загрузке определенных модулей или драйверов фильтров

Оригинальная версия продукта: SQL Server
Оригинальный номер базы знаний: 2033238, 2454053

Симптомы

Рассмотрим один из следующих сценариев:

  • Некоторые модули загружаются в адресное пространство процесса SQL Server (Sqlservr.exe).
  • Некоторые драйверы фильтров загружаются в систему, которая работает SQL Server компонентами.

В этих сценариях могут возникнуть проблемы с снижением производительности и согласованности SQL Server ядром СУБД.

  • Отчеты о различных сообщениях об ошибках и условиях, не связанных с ответами (SQL Server сообщение планировщика, например 17883, сообщения об истечении времени ожидания приложения, серьезные блокировки в SQL Server).
  • Медленное реагирование от SQL Server даже если параллельное количество нагрузки или действия не является необычно тяжелым.
  • Исключения (например, нарушения доступа), критические сообщения об ошибках о согласованности базы данных, сообщения утверждения или неожиданное завершение процесса.
  • 100 % загрузка ЦП и длительное восстановление базы данных при использовании In-Memory таблиц OLTP в SQL Server.
  • Высокая загрузка ЦП для процесса SQL Server, особенно привилегированное время процессора.
  • Непредвиденные или необъяснимые сбои, когда SQL Server процессы делают вызовы API Windows.
  • Дампы памяти, активированные для SQLDumper.exe, могут завершиться сбоем, что препятствует любым действиям по устранению неполадок.

Из-за характера этих проблем выявление первопричин часто требует значительного времени на устранение неполадок и низкоуровневой трассировки.

Причины

Эти проблемы возникают из-за следующих причин для модулей и драйверов фильтров.

Модули (библиотеки DLL или EXEs)

Эти проблемы возникают из-за того, что приложения или другое программное обеспечение, установленное на сервере под управлением SQL Server, могут загружать определенные модули в процесс SQL Server (Sqlservr.exe). Это может быть сделано для выполнения определенных требований бизнес-логики, расширенных функциональных возможностей или мониторинга вторжений. Эти модули могут выполнять неподдерживаемые действия, которые включают обход важных API Win32 и SQL Server подпрограмм, а также вызов рискованных API. Кроме того, некоторые внутренние проблемы в этих модулях могут привести к повреждению различных структур памяти, необходимых для правильной работы процесса SQL Server.

Список модулей (DLL), загруженных в данном процессе, можно получить с помощью различных средств, таких как ListDlls или Process Обозреватель.

Драйверы фильтрации

Драйверы фильтров можно установить в системе в рамках программы установки приложения, чтобы обеспечить определенный вид функциональности. Примеры включают антивирусную защиту, оперативное резервное копирование, службы шифрования, а также средства сжатия или дефрагментации данных. Эти драйверы фильтров вставляются в стек ввода-вывода файлов Windows, чтобы улучшить или изменить поведение запросов файловых систем.

В некоторых условиях выполнение этих запросов может занять много времени или потреблять чрезмерные ресурсы. Кроме того, может возникнуть определенная несовместимость между различными драйверами фильтров, которые присутствуют в одном стеке драйверов.

SQL Server обычно генерирует много файловой системы ввода-вывода (некоторые из которых больше, чем в среднем). Таким образом, по сравнению с другими работающими приложениями с меньшей интенсивностью ввода-вывода проблема с драйверами фильтров будет иметь более серьезное влияние на SQL Server.

Примечание.

В отличие от внедренных библиотек DLL, драйверы фильтров (обычно с расширением .sys) не отображаются в сведениях о пользовательских процессах, так как они являются сущностями ядра. Для обнаружения установленных минифильтров можно использовать такие средства, как встроенные в Windowsfltmc.exe .

Обходной путь

Предупреждение

Это обходное решение повышает уязвимость компьютера или сети к атакам пользователей-злоумышленников или вредоносных программ, например вирусов. Мы не рекомендуем использовать это решение, но предоставляем эти сведения, чтобы вы могли реализовать это решение по своему усмотрению. Ответственность за использование этого обходного пути несет пользователь.

Чтобы обойти эти проблемы, определите драйвер фильтра или модуль, вызывающий проблемы. Затем попробуйте все или один из следующих методов соответствующим образом. Чтобы помочь вам определить драйвер фильтра или модуль, проверка список возможных драйверов и модулей фильтра для получения дополнительных сведений.

  • Обратитесь к поставщику модуля, драйвера фильтра или приложения, чтобы проверка обновления. Примените все доступные обновления.
  • Настройте драйвер фильтра или связанное с ним приложение таким образом, чтобы он не влиял на рабочую нагрузку или операции SQL Server.
  • Отключите загрузку драйвера фильтра в систему.
  • Настройте приложение, чтобы не загружать конкретный модуль в процесс SQL Server.
  • В некоторых редких ситуациях может потребоваться удалить модуль или драйвер фильтра и связанное с ним приложение, чтобы восстановить стабильность SQL Server процесса и системы.

Список драйверов и модулей фильтра, которые могут вызвать проблемы

Следующий список поможет определить драйверы и модули фильтров, которые могут вызвать проблемы с производительностью. Вы можете собрать итеративный набор диагностических данных и данных трассировки для проблем.

  • ENTAPI.DLL

    ENTAPI.DLL загружается в процесс SQL Server, если установить McAfee VirusScan Enterprise на сервере под управлением Microsoft SQL Server, а затем настроить это программное обеспечение для мониторинга SQL Server. При загрузке этого модуля важные API Win 32 также обходятся внутри процесса SQL Server. Если вы заметили, что этот модуль загружен в процесс SQL Server, настройте McAfee VirusScan Enterprise, чтобы исключить Sqlservr.exe из различных расширенных мониторинга, таких как защита от переполнения буфера.

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

    Эти DLL-файлы загружаются в процесс SQL Server при установке программного обеспечения McAfee Host Intrusion Prevention в той же системе, что и SQL Server. Если вы заметили, что этот модуль загружен в SQL Server процессе, настройте McAfee Host Prevention, чтобы исключить Sqlservr.exe из списка мониторинга.

  • SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLLи SOPHOS_DETOURED_x64.DLL

    Эти DLL-файлы загружаются в процесс SQL Server при установке антивирусной программы Sophos на сервере, на котором выполняется SQL Server. Если вы заметили, что этот модуль загружается в процесс SQL Server, можно настроить подраздел реестра AppInit_Dlls, чтобы этот модуль не загружался в SQL Server процесс.

  • PIOLEDB.DLL и PISDK.DLL

    Эти DLL-файлы загружаются в процесс SQL Server, если для доступа к данным с pi-сервера используется поставщик OLEDB pi или если вы используете расширенные хранимые процедуры, использующие пакет SDK для PI. Если вы заметили, что эти модули загружаются в процесс SQL Server, обратитесь к поставщику этих модулей, чтобы настроить поставщика OLEDB в качестве внепроцессного поставщика. Такая конфигурация позволяет избежать необходимости загрузки этих модулей в процесс SQL Server.

  • UMPPC*.DLL и SCRIPTCONTROL*.DLL

    Эти DLL-файлы загружаются в адресное пространство SQL Server связанных процессов, если включить параметр дополнительного защиты данных в пользовательском режиме для программ защиты от вирусов и конечных точек CrowdStrike. Вы можете заметить сбои, когда агент SQL Server пытается создать новые процессы при выполнении заданий. При попытке запустить SQL Server Management Studio могут возникнуть сбои. Вы также можете увидеть, что SQL Server не запускает SQLDumper.exe для создания дампов памяти. Мы рекомендуем обратиться в службу поддержки Crowdstrike с информацией, связанной с вашей проблемой, и спросить, доступно ли исправление.

  • perfiCrcPerfMonMgr.DLL

    Этот DLL-файл загружается в процесс SQL Server при установке клиента Trend Micro OfficeScan. См. параметр списка исключений издателя программного обеспечения в разделе Рекомендуемый список исключений сканирования для продуктов Trend Micro Endpoint.

  • MFEBOPK.SYS

    Этот драйвер фильтра используется для Buffer Overflow Protection функции в McAfee VirusScan Enterprise. Если эта функция включена, вы заметите, что sqlservr.exe входит в список процессов, защищенных с помощью Buffer Overflow Protection. Если у вас есть этот драйвер фильтра в системе, которая работает SQL Server, необходимо выполнить действия, указанные в разделе Обходной путь. Дополнительные сведения см. в разделе Проблема с высоким воздействием. Серверы могут перестать отвечать на запросы из-за нескольких проблем.

  • NLEMSQL64.SYS и NLEMSQL.SYS

    Этот драйвер фильтра устанавливается netLib Encryptionizer-Software. Если этот драйвер фильтра установлен на компьютере под управлением SQL Server и выполняется резервное копирование в сетевую папку, могут возникнуть сбои, которые возвращают ошибку операционной системы 1 : неправильная функция. Чтобы устранить эту проблему, обратитесь к поставщику программного обеспечения, чтобы получить обновления для драйвера фильтра.

  • MFETDIK.SYS

    Этот драйвер фильтра используется для McAfee Anti-Virus Mini-Firewall функции в продуктах McAfee VirusScan Enterprise и McAfee McShield. Если эта функция включена, вы заметите, что sqlservr.exe входит в список процессов, отслеживаемых компонентом Anti-Virus . Если у вас есть этот драйвер фильтра в системе, которая работает SQL Server, необходимо выполнить действия, указанные в разделе Обходной путь. Можно также добавить SQL Server процессов в список процессов с низким риском в конфигурации антивирусной программы.

Справочные материалы

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Заявление об отказе от ответственности за контактные данные сторонней организации

Корпорация Майкрософт предоставляет сторонние контактные данные, чтобы помочь вам найти дополнительные сведения по этой теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактной информации сторонних поставщиков.

Сторонние сведения и заявление об отказе от ответственности для решения

Содержащиеся в документе сведения и рассмотренные решения отражают позицию корпорации Майкрософт в отношении обсуждаемых вопросов на момент публикации. Для получения данного решения необходимо обратиться в корпорацию Майкрософт или к сторонним поставщикам. Ни один из независимых поставщиков и ни одно из решений сторонних разработчиков, описываемых в данной статье, не являются предпочтительными с точки зрения корпорации Майкрософт. Кроме независимых поставщиков и решений сторонних разработчиков, упомянутых в данной статье, могут существовать и другие поставщики и решения. В условиях меняющейся рыночной конъюнктуры эти сведения не следует рассматривать в качестве какого бы то ни было обязательства со стороны корпорации Майкрософт. Корпорация Майкрософт не подтверждает и не гарантирует точности сведений и решений, предоставленных корпорацией Майкрософт или упомянутыми сторонними разработчиками.

Корпорация Майкрософт не предоставляет никаких гарантий и отказывается от явных, подразумеваемых или предусмотренных законодательством гарантий, заверений и условий, Эти условия включают, помимо прочего, заверения, гарантии или условия титула, отсутствие нарушения прав, удовлетворительное состояние, товаропригодность и пригодность для конкретной цели, в отношении любой услуги, решения, продукта или любых других материалов или информации. Корпорация Майкрософт не несет ответственности за решения сторонних разработчиков, упомянутые в данной статье.