Udostępnij za pośrednictwem


Problemy z wydajnością i spójnością podczas ładowania niektórych modułów lub sterowników filtrów

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2033238, 2454053

Symptomy

Rozważmy jeden z następujących scenariuszy:

  • Niektóre moduły są ładowane do przestrzeni adresowej procesu SQL Server (Sqlservr.exe).
  • Niektóre sterowniki filtrów są ładowane do systemu z uruchomionymi składnikami SQL Server.

W scenariuszach mogą wystąpić problemy z obniżeniem wydajności i spójnością SQL Server Aparatu bazy danych.

  • Raporty o różnych komunikatach o błędach i warunkach związanych z brakiem odpowiedzi (SQL Server komunikat harmonogramu, taki jak 17883, komunikaty limitu czasu aplikacji, poważne blokowanie w SQL Server).
  • Powolna reakcja ze strony SQL Server nawet wtedy, gdy współbieżna ilość obciążenia lub aktywności nie jest niezwykle duża.
  • Wyjątki (takie jak naruszenia dostępu), krytyczne komunikaty o błędach dotyczące spójności bazy danych, komunikatów asercji lub nieoczekiwanego zakończenia procesu.
  • 100% wykorzystania procesora CPU i długi czas odzyskiwania bazy danych, gdy używasz In-Memory tabel OLTP w SQL Server.
  • Wysokie użycie procesora CPU dla procesu SQL Server, zwłaszcza uprzywilejowanego czasu procesora.
  • Nieoczekiwane lub niewyjaśnione błędy podczas wykonywania wywołań interfejsu API systemu Windows przez procesy SQL Server.
  • Zrzuty pamięci wyzwalane dla SQLDumper.exe mogą zakończyć się niepowodzeniem, co utrudnia działanie rozwiązywania problemów.

Ze względu na charakter tych problemów identyfikacja głównej przyczyny często wymaga znacznego czasu rozwiązywania problemów i śledzenia niskiego poziomu.

Przyczyny

Te problemy występują z powodu następujących przyczyn modułów i sterowników filtrów.

Moduły (biblioteki DLL lub EXE)

Te problemy występują, ponieważ aplikacje lub inne oprogramowanie zainstalowane na serwerze z systemem SQL Server może załadować niektóre moduły do procesu SQL Server (Sqlservr.exe). Można to zrobić w celu osiągnięcia określonego wymagania dotyczącego logiki biznesowej, rozszerzonej funkcjonalności lub monitorowania włamań. Te moduły mogą wykonywać nieobsługiwanych działań, które obejmują objaśnianie ważnych interfejsów API Win32 i procedur SQL Server oraz wywoływanie ryzykownych interfejsów API. Ponadto niektóre wewnętrzne problemy w tych modułach mogą powodować uszkodzenie różnych struktur pamięci, które są niezbędne do poprawnego działania procesu SQL Server.

Listę modułów załadowanych w danym procesie można uzyskać za pomocą różnych narzędzi, takich jak ListDlls lub Process Explorer.

Sterowniki filtrów

Sterowniki filtrów można zainstalować w systemie w ramach programu instalacyjnego aplikacji w celu zapewnienia pewnego rodzaju funkcji. Przykłady obejmują ochronę antywirusową, kopie zapasowe online, usługi szyfrowania oraz obiekty kompresji lub defragmentacji danych. Te sterowniki filtrów wstawiają się do stosu we/wy plików systemu Windows w celu zwiększenia lub zmiany zachowania żądań systemów plików.

W niektórych warunkach te żądania mogą zająć dużo czasu lub zużywać nadmierne zasoby. Ponadto może istnieć pewna forma niezgodności między różnymi sterownikami filtrów, które znajdują się w tym samym stosie sterowników.

SQL Server zazwyczaj emituje wiele operacji we/wy systemu plików (niektóre z nich są większe niż średnia). W związku z tym w porównaniu z innymi uruchomionymi aplikacjami o mniejszej intensywności we/wy problem ze sterownikami filtrów będzie miał poważniejszy wpływ na SQL Server.

Uwaga

W przeciwieństwie do wprowadzonych bibliotek DLL sterowniki filtrów (zwykle z rozszerzeniem .sys) nie są widoczne w szczegółach procesów użytkownika, ponieważ są jednostkami jądra. Narzędzia takie jak wbudowane fltmc.exe systemu Windows umożliwiają odnajdywanie zainstalowanych minifiltrów.

Obejście problemu

Ostrzeżenie

To obejście problemu może narazić komputer lub sieć na większe zagrożenie ze strony złośliwych użytkowników lub szkodliwego oprogramowania takiego jak wirusy. Nie zalecamy tego obejścia, ale udostępniamy te informacje, aby można było zaimplementować to obejście według własnego uznania. To obejście użytkownicy stosują na własną odpowiedzialność.

Aby obejść te problemy, zidentyfikuj sterownik filtru lub moduł, który powoduje problemy. Następnie należy odpowiednio wypróbować wszystkie lub jedną z następujących metod. Aby ułatwić identyfikację sterownika filtru lub modułu, sprawdź listę niektórych możliwych sterowników filtrów i modułów , aby uzyskać więcej informacji.

  • Skontaktuj się z dostawcą modułu, sterownika filtru lub aplikacji, aby sprawdzić dostępność aktualizacji. Zastosuj wszystkie dostępne aktualizacje.
  • Skonfiguruj sterownik filtru lub skojarzoną aplikację w taki sposób, aby nie zakłócać obciążenia SQL Server ani operacji.
  • Wyłącz ładowanie sterownika filtru do systemu.
  • Skonfiguruj aplikację, aby nie ładować określonego modułu do procesu SQL Server.
  • W niektórych rzadkich sytuacjach może być konieczne usunięcie modułu lub sterownika filtru oraz skojarzonej z nim aplikacji w celu przywrócenia stabilności procesu SQL Server i systemu.

Lista sterowników filtrów i modułów, które mogą powodować problemy

Poniższa lista pomaga zidentyfikować sterowniki filtrów i moduły, które mogą powodować problemy z wydajnością. Możesz zebrać iteracyjny zestaw danych diagnostycznych i śledzenia dla problemów.

  • ENTAPI.DLL

    ENTAPI.DLL jest ładowany do procesu SQL Server, jeśli zainstalujesz program McAfee VirusScan Enterprise na serwerze z systemem Microsoft SQL Server, a następnie skonfigurujesz to oprogramowanie do monitorowania SQL Server. Po załadowaniu tego modułu ważne interfejsy API win 32 są również objaśnione wewnątrz procesu SQL Server. Jeśli zauważysz, że ten moduł jest ładowany do procesu SQL Server, skonfiguruj usługę McAfee VirusScan Enterprise, aby wykluczyć Sqlservr.exe z różnych zaawansowanych monitorowania, takich jak ochrona przed przepełnieniem buforu.

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

    Te pliki DLL są ładowane do procesu SQL Server, jeśli zainstalujesz oprogramowanie McAfee Host Intrusion Prevention w tym samym systemie co SQL Server. Jeśli zauważysz, że ten moduł jest ładowany do procesu SQL Server, skonfiguruj funkcję McAfee Host Intrusion Prevention, aby wykluczyć Sqlservr.exe z listy monitorowania.

  • SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLLi SOPHOS_DETOURED_x64.DLL

    Te pliki DLL są ładowane do procesu SQL Server w przypadku zainstalowania programu antywirusowego Sophos na serwerze z systemem SQL Server. Jeśli zauważysz, że ten moduł jest ładowany do procesu SQL Server, możesz skonfigurować podklucz rejestru AppInit_Dlls, aby uniknąć ładowania tego modułu do procesu SQL Server. Aby uzyskać więcej informacji, zobacz AppInit_DLLs w systemach Windows 7 i Windows Server 2008 R2 oraz Biblioteki DLL AppInit i Bezpieczny rozruch.

  • PIOLEDB.DLL i PISDK.DLL

    Te pliki DLL są ładowane do procesu SQL Server, jeśli używasz dostawcy OLEDB PI do uzyskiwania dostępu do danych z serwera PI lub jeśli używasz rozszerzonych procedur składowanych korzystających z zestawu PI SDK. Jeśli zauważysz, że te moduły są ładowane do procesu SQL Server, skontaktuj się z dostawcą tych modułów, aby skonfigurować dostawcę OLEDB jako dostawcę pozaprocesowego. Ta konfiguracja pomaga uniknąć konieczności ładowania tych modułów do procesu SQL Server.

  • UMPPC*.DLL i SCRIPTCONTROL*.DLL

    Te pliki DLL są ładowane do przestrzeni adresowej SQL Server powiązanych procesów, jeśli włączysz ustawienie Ochrona danych trybu dodatkowego użytkownika dla programów ochrony przed wirusami/punktami końcowymi CrowdStrike. Podczas próby utworzenia nowych procesów podczas wykonywania zadań przez agenta SQL Server można zauważyć błędy. Podczas próby uruchomienia SQL Server Management Studio mogą wystąpić błędy. Może się również okazać, że SQL Server nie może uruchomić SQLDumper.exe w celu wygenerowania zrzutów pamięci. Zalecamy skontaktowanie się z pomocą techniczną aplikacji Crowdstrike z informacjami dotyczącymi problemu i pytanie, czy jest dostępna poprawka.

  • perfiCrcPerfMonMgr.DLL

    Ten plik DLL jest ładowany do procesu SQL Server w przypadku zainstalowania klienta Trend Micro OfficeScan. Zapoznaj się z ustawieniem listy wykluczeń wydawcy oprogramowania na liście zalecanych wykluczeń skanowania dla produktów Trend Micro Endpoint.

  • MFEBOPK.SYS

    Ten sterownik filtru Buffer Overflow Protection jest używany dla funkcji w usłudze McAfee VirusScan Enterprise. Jeśli ta funkcja jest włączona, zauważysz, że sqlservr.exe znajduje się na liście procesów chronionych przez Buffer Overflow Protectionprogram . Jeśli masz ten sterownik filtru w systemie, w SQL Server, musisz wykonać akcje określone w sekcji Obejście. Aby uzyskać więcej informacji, zobacz Problem z dużym wpływem: serwery mogą przestać odpowiadać z powodu wielu problemów.

  • NLEMSQL64.SYS i NLEMSQL.SYS

    Ten sterownik filtru jest instalowany przez program NetLib Encryptionizer-Software. Po zainstalowaniu tego sterownika filtru na komputerze z uruchomionym SQL Server i wykonaniu kopii zapasowej udziału sieciowego mogą wystąpić błędy zwracające błąd systemu operacyjnego 1: Nieprawidłowa funkcja. Aby rozwiązać ten problem, skontaktuj się z dostawcą oprogramowania, aby uzyskać aktualizacje sterownika filtru.

  • MFETDIK.SYS

    Ten sterownik filtru McAfee Anti-Virus Mini-Firewall jest używany do funkcji w produktach McAfee VirusScan Enterprise i McAfee McShield. Jeśli ta funkcja jest włączona, zauważysz, że sqlservr.exe znajduje się na liście procesów monitorowanych przez funkcję Anti-Virus . Jeśli masz ten sterownik filtru w systemie, w SQL Server, musisz wykonać akcje określone w sekcji Obejście. Możesz również rozważyć dodanie procesów SQL Server do listy procesów niskiego ryzyka w konfiguracji antywirusowej.

Odwołanie

Zastrzeżenie dotyczące innych firm

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.

Wyłączenie odpowiedzialności za kontakty z osobami trzecimi

Firma Microsoft udostępnia informacje kontaktowe innych firm, które ułatwiają znalezienie dodatkowych informacji na ten temat. Informacje te mogą zostać zmienione bez powiadomienia. Firma Microsoft nie gwarantuje dokładności informacji kontaktowych innych firm.

Zastrzeżenie dotyczące informacji i rozwiązań innych firm

Informacje i rozwiązanie zawarte w tym dokumencie reprezentują bieżący firmy Microsoft Corporation w tych kwestiach na dzień publikacji. To rozwiązanie jest dostępne za pośrednictwem firmy Microsoft lub dostawcy innej firmy. Firma Microsoft nie zaleca konkretnie żadnego innego dostawcy ani rozwiązania innej firmy, które może opisywać ten artykuł. Mogą istnieć również inni dostawcy lub rozwiązania innych firm, których ten artykuł nie opisuje. Ponieważ firma Microsoft musi reagować na zmieniające się warunki rynkowe, te informacje nie powinny być interpretowane jako zobowiązanie firmy Microsoft. Firma Microsoft nie może zagwarantować ani potwierdzić dokładności jakichkolwiek informacji ani jakiegokolwiek rozwiązania, które jest prezentowane przez firmę Microsoft lub jakiegokolwiek wymienionego dostawcę zewnętrznego.

Firma Microsoft nie udziela żadnych gwarancji i wyklucza wszystkie oświadczenia, gwarancje i warunki, zarówno te wyrażone bezpośrednio, dorozumiane, jak i ustawowe. Warunki te obejmują między innymi oświadczenia, gwarancje lub rękojmi tytułu, nie naruszenia własności intelektualnych, zadowalającego warunku, wartości handlowej i przydatności do określonego celu, w odniesieniu do wszelkich usług, rozwiązań, produktów lub innych materiałów lub informacji. W żadnym wypadku firma Microsoft nie ponosi odpowiedzialności za jakiekolwiek rozwiązania innych firm wymienionych w tym artykule.