Problemi di prestazioni e coerenza quando vengono caricati determinati moduli o driver di filtro
Versione originale del prodotto: SQL Server
Numero KB originale: 2033238, 2454053
Sintomi
Si consideri uno degli scenari seguenti:
- Alcuni moduli vengono caricati nello spazio degli indirizzi del processo di SQL Server (Sqlservr.exe).
- Alcuni driver di filtro vengono caricati in un sistema che esegue componenti di SQL Server.
Negli scenari è possibile che si verifichino problemi di riduzione delle prestazioni e coerenza di SQL Server motore di database.
- Report di vari messaggi di errore e condizioni correlati a risposta (messaggio dell'utilità di pianificazione di SQL Server, ad esempio 17883, messaggi di timeout dell'applicazione, blocco grave all'interno di SQL Server).
- Risposta lenta da SQL Server anche se la quantità simultanea di carico o attività non è insolitamente pesante.
- Eccezioni (ad esempio violazioni di accesso), messaggi di errore critici relativi alla coerenza del database, ai messaggi di asserzione o alla terminazione imprevista del processo.
- Utilizzo della CPU al 100% e tempi di ripristino lunghi del database quando si usano tabelle OLTP in memoria in SQL Server.
- Utilizzo elevato della CPU per il processo di SQL Server, in particolare il tempo del processore con privilegi.
- Errori imprevisti o inspiegabili quando i processi di SQL Server emettono chiamate API di Windows.
- I dump di memoria attivati per SQLDumper.exe potrebbero non riuscire a completare l'attività di risoluzione dei problemi.
A causa della natura di questi problemi, l'identificazione della causa radice spesso richiede tempi di risoluzione dei problemi significativi e traccia di basso livello.
Cause
Questi problemi si verificano a causa delle cause seguenti per i moduli e i driver di filtro.
Moduli (DLL o EXEs)
Questi problemi si verificano perché le applicazioni o altri software installati in un server che esegue SQL Server possono caricare determinati moduli nel processo di SQL Server (Sqlservr.exe). Questa operazione può essere eseguita per ottenere un requisito specifico per la logica di business, una funzionalità avanzata o il monitoraggio delle intrusioni. Questi moduli possono eseguire attività non supportate che includono la deviazione di importanti API Win32 e routine di SQL Server e la chiamata di API rischiose. Inoltre, alcuni problemi intrinseci all'interno di questi moduli possono causare il danneggiamento di varie strutture di memoria necessarie per il corretto funzionamento del processo di SQL Server.
L'elenco di moduli (DLL) caricati in un determinato processo può essere ottenuto tramite vari strumenti, ad esempio ListDlls o Esplora processi.
Filtrare i driver
I driver di filtro possono essere installati in un sistema come parte del programma di installazione di un'applicazione per fornire un determinato tipo di funzionalità. Gli esempi includono protezione antivirus, backup online, servizi di crittografia e strutture di compressione o deframmentazione dei dati. Questi driver di filtro si inseriscono nello stack di I/O dei file di Windows per migliorare o modificare il comportamento delle richieste di file system.
In alcune condizioni, queste richieste possono richiedere molto tempo per il completamento o l'utilizzo di risorse eccessive. Inoltre, potrebbe esserci qualche forma di incompatibilità tra i diversi driver di filtro presenti nello stesso stack di driver.
SQL Server genera in genere molte operazioni di I/O del file system (alcune delle quali sono superiori alla media). Pertanto, rispetto ad altre applicazioni in esecuzione con minore intensità di I/O, il problema con i driver di filtro avrà un impatto più grave su SQL Server.
Note
A differenza delle DLL inserite, i driver di filtro (in genere con estensione .sys) non sono visibili nei dettagli dei processi utente perché sono entità kernel. È possibile usare strumenti come i fltmc.exe predefiniti di Windows per individuare i minifiltri installati.
Soluzione alternativa
Avviso
Questa soluzione alternativa potrebbe rendere il computer o la rete più vulnerabile ad attacchi di utenti malintenzionati o programmi software dannosi, ad esempio i virus. Questa soluzione alternativa non è consigliata, ma fornisce queste informazioni in modo che sia possibile implementare questa soluzione alternativa a propria discrezione. L'utilizzo di questa soluzione avviene pertanto a rischio esclusivo dell'utente.
Per risolvere questi problemi, identificare il driver di filtro o il modulo che causa i problemi. Quindi, provare tutti o uno dei metodi seguenti in modo appropriato. Per identificare il driver di filtro o il modulo, vedere l'elenco di alcuni possibili driver di filtro e moduli per altre informazioni.
- Contattare il fornitore del modulo, del driver di filtro o dell'applicazione per verificare la disponibilità di aggiornamenti. Applicare tutti gli aggiornamenti disponibili.
- Configurare il driver di filtro o l'applicazione associata in modo che non interferisca con il carico di lavoro o le operazioni di SQL Server.
- Disabilitare il caricamento del driver di filtro nel sistema.
- Configurare l'applicazione per non caricare il modulo specifico nel processo di SQL Server.
- In alcune situazioni rare, potrebbe essere necessario rimuovere il modulo o il driver di filtro e l'applicazione associata per ripristinare la stabilità del processo di SQL Server e del sistema.
Elenco di driver e moduli di filtro che possono causare i problemi
L'elenco seguente consente di identificare i driver di filtro e i moduli che possono causare i problemi di prestazioni. È possibile raccogliere un set iterativo di dati di diagnostica e traccia per i problemi.
ENTAPI.DLL
ENTAPI.DLL viene caricato nel processo di SQL Server se si installa McAfee VirusScan Enterprise in un server che esegue Microsoft SQL Server e quindi si configura questo software per monitorare SQL Server. Quando questo modulo viene caricato, anche le API Win 32 importanti vengono deviate all'interno del processo di SQL Server. Se si nota che questo modulo viene caricato nel processo di SQL Server, configurare McAfee VirusScan Enterprise per escludere Sqlservr.exe da vari monitoraggi avanzati, ad esempio la protezione dell'overflow del buffer.
HIPI.DLL, HcSQL.DLL, HcApi.DLL e HcThe.DLL
Questi file DLL vengono caricati nel processo di SQL Server se si installa il software McAfee Host Intrusion Prevention nello stesso sistema di SQL Server. Se si nota che questo modulo viene caricato nel processo di SQL Server, configurare McAfee Host Intrusion Prevention per escludere Sqlservr.exe dall'elenco di monitoraggio.
SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLL e SOPHOS_DETOURED_x64.DLL
Questi file DLL vengono caricati nel processo di SQL Server se si installa il programma Antivirus Sophos in un server che esegue SQL Server. Se si nota che questo modulo viene caricato nel processo di SQL Server, è possibile configurare la sottochiave del Registro di sistema AppInit_Dlls per evitare il caricamento di questo modulo nel processo di SQL Server. Per altre informazioni, vedere AppInit_DLLs in Windows 7 e Windows Server 2008 R2 e DLL AppInit e Avvio protetto.
PIOLEDB.DLL e PISDK.DLL
Questi file DLL vengono caricati nel processo di SQL Server se si usa il provider OLEDB PI per accedere ai dati da un server PI o se si usano stored procedure estese che usano PI SDK. Se si nota che questi moduli vengono caricati nel processo di SQL Server, contattare il fornitore di questi moduli per configurare il provider OLEDB come provider out-of-process. Questa configurazione consente di evitare la necessità di caricare questi moduli nel processo di SQL Server.
UMPPC*.DLL e SCRIPTCONTROL*.DLL
Questi file DLL vengono caricati nello spazio indirizzi dei processi correlati a SQL Server se si abilita l'impostazione Protezione dei dati in modalità utente aggiuntiva per i programmi Di protezione antivirus/endpoint CrowdStrike. Durante l'esecuzione di processi, è possibile che si verifichino errori durante i tentativi di creazione di nuovi processi. È possibile che si verifichino errori durante il tentativo di avviare SQL Server Management Studio. È anche possibile che SQL Server non venga avviato SQLDumper.exe per generare dump di memoria. Ti consigliamo di contattare il supporto di Crowdstrike con informazioni relative al problema e chiedere se è disponibile una correzione.
perfiCrcPerfMonMgr.DLL
Questo file DLL viene caricato nel processo di SQL Server se si installa il client Trend Micro OfficeScan. Fare riferimento all'impostazione dell'elenco di esclusione dell'editore software in Elenco di esclusione analisi consigliata per i prodotti Trend Micro Endpoint.
MFEBOPK.SYS
Questo driver di filtro viene usato per la
Buffer Overflow Protection
funzionalità in McAfee VirusScan Enterprise. Se questa funzionalità è abilitata, si noterà che sqlservr.exe è tra l'elenco dei processi protetti daBuffer Overflow Protection
. Se si dispone di questo driver di filtro in un sistema che esegue SQL Server, è necessario eseguire le azioni specificate nella sezione Soluzione alternativa . Per altre informazioni, vedere Problema ad impatto elevato: i server potrebbero non rispondere a causa di più problemi.NLEMSQL64.SYS e NLEMSQL.SYS
Questo driver di filtro viene installato da NetLib Encryptionizer-Software. Quando questo driver di filtro è installato in un computer che esegue SQL Server ed è in esecuzione il backup in una condivisione di rete, potrebbero verificarsi errori che restituiscono l'errore del sistema operativo 1 : Funzione non corretta. Per risolvere questo problema, contattare il fornitore del software per ottenere gli aggiornamenti al driver di filtro.
MFETDIK.SYS
Questo driver di filtro viene usato per la
McAfee Anti-Virus Mini-Firewall
funzionalità nei prodotti McAfee VirusScan Enterprise e McAfee McShield. Se questa funzionalità è abilitata, si noterà che sqlservr.exe è tra l'elenco dei processi monitorati dallaAnti-Virus
funzionalità. Se si dispone di questo driver di filtro in un sistema che esegue SQL Server, è necessario eseguire le azioni specificate nella sezione Soluzione alternativa . È anche possibile prendere in considerazione l'aggiunta di processi di SQL Server all'elenco dei processi a basso rischio nella configurazione antivirus.
Riferimenti
- Tipi di driver WDM
- Come disattivare temporaneamente il driver di filtro in modalità kernel in Windows
- Le deviazioni o tecniche simili possono causare comportamenti imprevisti con SQL Server
- Come eseguire un oggetto COM basato su DLL all'esterno del processo di SQL Server
Dichiarazione di non responsabilità sulle informazioni di terze parti
I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti
Dichiarazione di non responsabilità di contatti di terze parti
Microsoft fornisce informazioni di contatto di terze parti per aiutarti a trovare ulteriori informazioni su questo argomento. Queste informazioni di contatto sono soggette a modifica senza preavviso. Microsoft non garantisce l'accuratezza delle informazioni di contatto di terze parti.
Esclusione di responsabilità per informazioni e soluzioni di terze parti
Le informazioni e le soluzioni contenute in questo documento rappresentano l'opinione attuale di Microsoft Corporation su questi temi alla data di pubblicazione. Questa soluzione è disponibile tramite Microsoft o un fornitore di terze parti. Microsoft non raccomanda specificamente alcun fornitore di terze parti o soluzione di terze parti descritti in questo articolo. Nell'articolo potrebbero non essere menzionate ulteriori terze parti o soluzioni di terze parti comunque disponibili. Poiché Microsoft deve rispondere alle mutevoli condizioni di mercato, queste informazioni non devono essere interpretate come un impegno da parte di Microsoft. Microsoft non può garantire o approvare la precisione di qualsiasi informazione o soluzione presentata da Microsoft o da qualsiasi fornitore di terze parti menzionato.
Microsoft non concede alcuna garanzia, dovere o condizione espressa, implicita o di legge, Queste condizioni includono, in via esemplificativa, eventuali garanzie, doveri o condizioni di titolarità, di non violazione dei diritti altrui, di stato soddisfacente, di commerciabilità e di idoneità per uno scopo particolare in relazione a qualsiasi servizio, soluzione, prodotto o altro materiale o informazione. Microsoft non sarà in alcun caso responsabile per i danni prodotti dalle soluzioni di terze parti menzionate nel presente articolo.