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ż jeden z następujących scenariuszy:

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

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

  • Raporty dotyczące różnych komunikatów o błędach i warunkach związanych z brakiem odpowiedzi (komunikat harmonogramu programu SQL Server, taki jak 17883, komunikaty przekroczenia limitu czasu aplikacji, poważne blokowanie w programie SQL Server).
  • Wolna odpowiedź z programu SQL Server, nawet jeśli współbieżna ilość obciążenia lub działania 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 w przypadku używania tabel OLTP w pamięci w programie SQL Server.
  • Wysokie użycie procesora dla procesu programu SQL Server, zwłaszcza czasu procesora uprzywilejowanego.
  • Nieoczekiwane lub niewyjaśnione błędy, gdy procesy programu SQL Server tworzą wywołania interfejsu API systemu Windows.
  • Zrzuty pamięci wyzwolone dla SQLDumper.exe mogą nie zakończyć się utrudnianiem działania 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 uruchomionym programem SQL Server mogą załadować niektóre moduły do procesu programu SQL Server (Sqlservr.exe). Można to zrobić, aby osiągnąć określone wymaganie logiki biznesowej, ulepszoną funkcjonalność lub monitorowanie nieautoryzowanego dostępu. Te moduły mogą wykonywać nieobsługiwane działania, które obejmują objazd ważnych interfejsów API win32 i procedur programu SQL Server oraz wywoływanie ryzykownych interfejsów API. Ponadto niektóre wewnętrzne problemy w tych modułach mogą spowodować uszkodzenie różnych struktur pamięci, które są niezbędne do prawidłowego działania procesu programu SQL Server.

Listę modułów (DLL) 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, aby zapewnić określony rodzaj funkcjonalności. Przykłady obejmują ochronę przed oprogramowaniem antywirusowym, kopie zapasowe online, usługi szyfrowania oraz kompresję danych lub funkcje defragmentacji. Te sterowniki filtrów wstawiają się do stosu we/wy pliku systemu Windows, aby ulepszyć lub zmienić zachowanie żą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.

Program SQL Server zwykle 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ł większy wpływ na program SQL Server.

Uwaga 16.

W przeciwieństwie do wstrzykiwanych bibliotek DLL sterowniki filtrów (zazwyczaj z rozszerzeniem .sys) nie są widoczne w szczegółach procesów użytkownika, ponieważ są jednostkami jądra. Aby odnaleźć zainstalowane minifiltry, można użyć narzędzi, takich jak wbudowane fltmc.exe systemu Windows.

Rozwiązanie

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 spróbuj odpowiednio wykonać 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 skojarzona aplikacja w taki sposób, aby nie zakłócała obciążenia ani operacji programu SQL Server.
  • Wyłącz sterownik filtru z ładowania do systemu.
  • Skonfiguruj aplikację, aby nie załadować określonego modułu do procesu programu SQL Server.
  • W niektórych rzadkich sytuacjach może być konieczne usunięcie modułu lub sterownika filtru oraz skojarzonej z nią aplikacji w celu przywrócenia stabilności w procesie programu SQL Server i systemie.

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

Poniższa lista ułatwia zidentyfikowanie sterowników filtrów i modułów, które mogą powodować problemy z wydajnością. W przypadku problemów można zebrać iteracyjny zestaw danych diagnostycznych i śledzenia.

  • ENTAPI.DLL

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

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

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

  • SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLL i SOPHOS_DETOURED_x64.DLL

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

  • PIOLEDB.DLL i PISDK.DLL

    Te pliki DLL są ładowane do procesu programu 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 programu SQL Server, skontaktuj się z dostawcą tych modułów, aby skonfigurować dostawcę OLEDB jako dostawcę poza procesem. Ta konfiguracja pomaga uniknąć konieczności załadowania tych modułów do procesu programu SQL Server.

  • UMPPC*.DLL i SCRIPTCONTROL*.DLL

    Te pliki DLL są ładowane do przestrzeni adresowej procesów związanych z programem SQL Server, jeśli włączysz ustawienie Ochrony 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ń może wystąpić błąd agenta programu SQL Server. Podczas próby uruchomienia programu SQL Server Management Studio mogą wystąpić błędy. Może się również okazać, że nie można uruchomić programu SQL Server SQLDumper.exe w celu wygenerowania zrzutów pamięci. Zalecamy skontaktowanie się z pomocą techniczną crowdstrike z informacjami dotyczącymi problemu i pytanie, czy poprawka jest dostępna.

  • perfiCrcPerfMonMgr.DLL

    Ten plik DLL jest ładowany do procesu programu SQL Server, jeśli zainstalujesz 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 jest używany do Buffer Overflow Protection obsługi funkcji w 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 ten sterownik filtru znajduje się w systemie z uruchomionym programem SQL Server, należy wykonać akcje określone w sekcji Obejście . Aby uzyskać więcej informacji, zobacz Problem z wysokim wpływem: serwery mogą nie odpowiadać z powodu wielu problemów.

  • NLEMSQL64.SYS i NLEMSQL.SYS

    Ten sterownik filtru jest instalowany przez oprogramowanie NetLib Encryptionizer-Software. Po zainstalowaniu tego sterownika filtru na komputerze z uruchomionym programem SQL Server i wykonaniu kopii zapasowej w udziale sieciowym mogą wystąpić błędy, które zwracają 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 jest używany do McAfee Anti-Virus Mini-Firewall 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 Anti-Virus tę funkcję. Jeśli ten sterownik filtru znajduje się w systemie z uruchomionym programem SQL Server, należy wykonać akcje określone w sekcji Obejście . Możesz również rozważyć dodanie procesów programu SQL Server do listy procesów niskiego ryzyka w konfiguracji oprogramowania antywirusowego.

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, aby uzyskać dodatkowe informacje na temat tego tematu. 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.