Проблемы производительности и согласованности при загрузке определенных модулей или драйверов фильтров
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 2033238, 2454053
Симптомы
Рассмотрим один из следующих сценариев:
- Некоторые модули загружаются в адресное пространство процесса SQL Server (Sqlservr.exe).
- Некоторые драйверы фильтров загружаются в систему под управлением компонентов SQL Server.
В сценариях могут возникнуть проблемы с снижением производительности и согласованности ядро СУБД SQL Server.
- Отчеты о различных сообщениях об ошибках и условиях без реагирования (сообщение планировщика SQL Server, например 17883, время ожидания приложения, серьезная блокировка в SQL Server).
- Медленный ответ от SQL Server, даже если одновременный объем нагрузки или действия не является необычно тяжелым.
- Исключения (например, нарушения доступа), критические сообщения об ошибках о согласованности базы данных, сообщениях утверждениях или неожиданном завершении процесса.
- 100 % загрузки ЦП и длительное время восстановления базы данных при использовании таблиц 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 Explorer.
Фильтры драйверов
Драйверы фильтров можно установить в системе в рамках программы установки приложения для предоставления определенной функциональности. К примерам относятся антивирусная защита, оперативное резервное копирование, службы шифрования и сжатие данных или средства дефрагментации. Эти драйверы фильтров вставляются в стек ввода-вывода файлов Windows для улучшения или изменения поведения запросов файловых систем.
В некоторых условиях эти запросы могут занять много времени для завершения или использования чрезмерных ресурсов. Кроме того, может быть некоторая несовместимость между различными драйверами фильтров, которые присутствуют в одном стеке драйверов.
SQL Server обычно выдает много файловой системы ввода-вывода (некоторые из которых больше среднего). Таким образом, по сравнению с другими работающими приложениями с меньшей интенсивностью ввода-вывода, проблема с драйверами фильтров будет иметь более серьезное влияние на SQL Server.
Примечание.
В отличие от внедренных библиотек DLL драйверы фильтров (обычно с расширением .sys) не отображаются в сведениях о пользовательских процессах, так как они являются сущностями ядра. Вы можете использовать такие средства, как встроенные fltmc.exe Windows для обнаружения установленных мини-фильтров.
Обходное решение
Предупреждение
Это обходное решение повышает уязвимость компьютера или сети к атакам пользователей-злоумышленников или вредоносных программ, например вирусов. Мы не рекомендуем использовать это решение, но предоставляют эти сведения, чтобы реализовать это решение по своему усмотрению. Ответственность за использование этого обходного пути несет пользователь.
Чтобы обойти эти проблемы, определите драйвер фильтра или модуль, вызывающий проблемы. Затем попробуйте все или один из следующих методов соответствующим образом. Чтобы определить драйвер фильтра или модуль, ознакомьтесь со списком возможных драйверов фильтров и модулей , чтобы получить дополнительные сведения.
- Обратитесь к поставщику модуля, драйвера фильтра или приложения, чтобы проверить наличие обновлений. Примените все доступные обновления.
- Настройте драйвер фильтра или связанное приложение таким образом, чтобы он не влиял на рабочую нагрузку или операции 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 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. Дополнительные сведения см. в разделе AppInit_DLLs в Windows 7 и Windows Server 2008 R2 и DLL-файлах AppInit и безопасной загрузке.
PIOLEDB.DLL и PISDK.DLL
Эти DLL-файлы загружаются в процесс SQL Server, если вы используете поставщик OLEDB PI для доступа к данным с сервера 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 в список процессов низкого риска в конфигурации антивирусной системы.
Справочные материалы
- Типы драйверов WDM
- Временное отключение драйвера фильтра режима ядра в Windows
- Отмена или аналогичные методы могут привести к непредвиденным поведению с SQL Server
- Запуск COM-объекта на основе DLL за пределами процесса SQL Server
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Заявление об отказе от ответственности за контактные данные сторонней организации
Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.
Заявления об отказе от ответственности в связи с деятельностью и решениями сторонних производителей
Содержащиеся в документе сведения и рассмотренные решения отражают позицию корпорации Майкрософт в отношении обсуждаемых вопросов на момент публикации. Для получения данного решения необходимо обратиться в корпорацию Майкрософт или к сторонним поставщикам. Ни один из независимых поставщиков и ни одно из решений сторонних разработчиков, описываемых в данной статье, не являются предпочтительными с точки зрения корпорации Майкрософт. Кроме независимых поставщиков и решений сторонних разработчиков, упомянутых в данной статье, могут существовать и другие поставщики и решения. В условиях меняющейся рыночной конъюнктуры эти сведения не следует рассматривать в качестве какого бы то ни было обязательства со стороны корпорации Майкрософт. Корпорация Майкрософт не подтверждает и не гарантирует точности сведений и решений, предоставленных корпорацией Майкрософт или упомянутыми сторонними разработчиками.
Корпорация Майкрософт не предоставляет никаких гарантий и отказывается от явных, подразумеваемых или предусмотренных законодательством гарантий, заверений и условий, Такие условия включают (но не ограничиваются только ими) заявления, гарантии или условия права собственности, ненарушения прав, удовлетворительного состояния, товарного состояния и пригодности для конкретной цели в отношении любой услуги, решения, продукта или любых других материалов или информации. Корпорация Майкрософт не несет ответственности за решения сторонних разработчиков, упомянутые в данной статье.