Problem med prestanda och konsekvens när vissa moduler läses in i SQL Server adress utrymme

Gäller för: Microsoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise EditionMicrosoft SQL Server 2005 Enterprise X64 Edition

Symptom


När vissa moduler läses in i adressutrymmet för Microsoft SQL Server-processen (Sqlservr.exe), kan följande problem uppstå:
  • Rapporter om olika felmeddelanden som rör låser sig och villkor (till exempel SQL Server scheduler meddelande som 17883, timeout programmeddelanden, kraftig blockering inom SQL Server)
  • Mycket långsam svar från SQL Server även om samtidiga mängden belastning inte är ovanligt mycket
  • Undantag (till exempel åtkomstfelen), kritiska felmeddelanden om databasens konsekvens, assertion meddelanden eller oväntat processterminering
  • 100% processoranvändning och långa databas återställningstiden när du använder i minnet OLTP-tabeller i SQL Server

Orsak


Dessa problem kan uppstå eftersom program eller andra program som är installerade på en server som kör SQL Server kan läsa in vissa moduler i SQL Server-processen (Sqlservr.exe). Detta kan göras för att uppnå en viss logik verksamhetskrav, förbättrade funktioner eller intrång övervakning. Dessa moduler kan utföra stöds inte aktiviteter som innehåller detouring viktigt Win32 API-gränssnitten och rutiner för SQL Server och anropa API för riskabelt. Vissa inbyggda problem inom dessa moduler kan dessutom skadas av olika minne strukturer som är nödvändiga för SQL Server-processen ska fungera korrekt.

Temporär lösning


Varning Lösningen kan göra datorn eller nätverket mer sårbara för angrepp från angripare eller skadliga program som virus. Vi rekommenderar inte den här lösningen, men vi lämnar informationen så att du kan implementera lösningen om du så önskar. Använd detta alternativ på egen risk.

Undvik problemet så här:

  1. Identifiera den modul som läses in i SQL Server-processen och som orsakar problemet.
  2. Utför följande åtgärder för modulen i fråga:

    1. Konfigurera programmet så att inte läsa in modulen specifika i SQL Server-processen.
    2. Kontakta leverantören av modul eller programmet att söka efter uppdateringar. Installera uppdateringar som är tillgängliga.
    3. I vissa sällsynta fall kan kanske du ta bort modulen och dess tillhörande programvara för att återställa SQL Server-processen och systemets stabilitet.
    Obs! I vissa fall kan behöva du utföra alla dessa åtgärder.

Mer Information


-Och Microsoft Customer Support Services (CSS) har identifierat följande moduler som kan orsaka problem som nämns i avsnittet ”Symptom”. Den här listan kommer att uppdateras när nya problem upptäcks. Den här listan finns för att identifiera den process som nämns i avsnittet ”lösning”. Den här processen brukar insamling av iterativa uppsättning för diagnostik och spårning av data under hela problemet.

Följande moduler kan orsaka prestanda- och stabilitetsproblem när de laddas i SQL Server-processen:
  • ENTAPI.DLL
    ENTAPI. DLL-fil läses in i SQL Server-processen om du installerar McAfee VirusScan Enterprise på en server som kör Microsoft SQL Server och konfigurera sedan programvaran om du vill övervaka SQL Server. När denna modul laddas detoured viktiga Win 32 API också i SQL Server-processen. Konfigurera McAfee VirusScan Enterprise om du vill utesluta olika avancerad övervakning, till exempel buffertspill Overflow skydd av SQL Server (Sqlservr.exe) om du märker att modulen laddas i SQL Server-processen.
  • HIPI.DLL, HcSQL.dll, HcApi.dll, HcThe.dll
    Dessa DLL-filer läses in i SQL Server-processen om du installerar McAfee värd intrångsskydd program på samma dator som SQL Server. Om du märker att modulen laddas i SQL Server-processen, konfigurera McAfee värd intrångsskydd att utesluta dess övervakning listan SQL Server (Sqlservr.exe).
  • SOPHOS_DETOURED. DLL och SOPHOS_DETOURED_x64. DLL, SWI_IFSLSP_64.dll
    Dessa DLL-filer läses in i SQL Server-processen om du installerar Sophos Antivirus-program på en server som kör SQL Server. Om du märker att modulen laddas i SQL Server-processen, kan du Konfigurera AppInit_Dlls registerundernyckel för att undvika att läsa in modulen i SQL Server-processen.
  • PIOLEDB. DLL och PISDK. DLL-FIL
    Dessa DLL-filer läses in i SQL Server-processen om du använder PI OLEDB-provider för åtkomst till data från en PI-server eller om du använder utökade lagrade procedurer som använder PI-SDK. Om du upptäcker att dessa moduler läses in i SQL Server-processen, kontaktar du leverantören av dessa moduler om du vill konfigurera OLEDB-providern som en out-of-process-leverantör. Den här konfigurationen hjälper dig för att undvika att behöva läsa in modulerna i SQL Server-processen.
Produkt-handboken eller kontakta programleverantören för mer information om hur du anger Undantagsprinciper för Sqlservr.exe i det program som diskuteras i denna artikel.

I följande tabell finns mer information om produkter och verktyg som automatiskt kontrollerar detta villkor i din instans av SQL Server och versioner av SQL Server som regeln utvärderas.

Regel programvaraRubrik för regelnBeskrivning av regelProduktversioner som regeln utvärderas
Klassificering av System CenterModuler som lästs in i SQL Server som kan orsaka stabilitetsproblem i serverSystem Center Advisor bestämmer om listan med DLL-filerna som nämns i denna artikel har lästs in i SQL Server-processen. Granska informationen som anges i avsnittet ”Information samlas in” klassificering av varning och gör sedan nödvändiga konfigurationsändringar som beskrivs i artikeln.SQLServer 2008
SQL Server 2008 R2
SQLServer 2012
SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA)Windows API-anrop som fångas uppSQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) innehåller en regel om du vill identifiera moduler så att den stöder buffertspill Overflow skydd som läses in i SQL Server. Om du kör BPA-verktyget och du får ett varningsmeddelande som kallas ”motor - Windows API-anrop som fångas upp”, inlästa moduler till stöd för skydd av buffertspill Overflow i SQL Server. BPA identifieras genom att leta efter alla moduler som har ett namn som liknar ”% entapi.dll%” som finns i sys.dm_os_loaded_modules dynamiska Management vy (DMV).SQLServer 2008
SQL Server 2008 R2
SQLServer 2012
SQL Server 2012 Best Practice Analyzer (SQL Server 2012 BPA)Windows API-anrop som fångas uppSQL Server 2012 BPA innehåller en regel som bestämmer om listan med DLL-filerna som nämns i denna artikel har lästs in i SQL Server-processen. Om du kör BPA-verktyget du får ett varningsmeddelande som kallas ”motor - Windows API-anrop som fångas upp”, granska informationen i ”problem” redogörelse för BPA och konfigurationsändringar krävs som beskrivs i artikeln.SQLServer 2012

Tredjepartsprodukter som diskuteras i denna artikel tillverkas oberoende av Microsoft. Microsoft lämnar inga garantier, implicerade eller andra, om prestanda eller tillförlitlighet hos dessa produkter.

Informationen och lösningen i detta dokument representerar Microsoft Corporations syn på problemet vid publiceringsdatumet. Lösningen finns att hämta hos Microsoft eller via en tredjepartsleverantör. Microsoft rekommenderar inte några speciella tredjepartsleverantörer eller tredjepartslösningar som den här artikeln kan beskriva. Det kan också finnas andra tredjepartsleverantörer eller tredjepartslösningar som den här artikeln inte beskrivs. Eftersom Microsoft måste iaktta förändrade marknadsvillkor, ska informationen inte tolkas ett åtagande av Microsoft. Microsoft kan inte garantera eller intyga riktigheten i informationen eller i någon lösning som presenteras av Microsoft eller någon nämnda tredjepartsleverantör.

Microsoft lämnar inga garantier och utesluter alla representationer, garantier och villkor om uttryckliga, underförstådda eller lagstadgade. Dessa innefattar men är inte begränsat till representationer, garantier eller villkor för rubrik, icke-intrång, tillfredsställande skick, SÄLJBARHET och lämplighet för ett särskilt ändamål gällande tjänster, lösning, produkt eller annat material eller information. Under inga omständigheter kommer Microsoft att betala tredjepartslösningar som nämns i denna artikel.

Referenser


Mer information om stöd för SQL Server klickar du på följande artikelnummer för att gå till artikeln i Microsoft Knowledge Base:

Mer information om SQL Server-processen klickar du på följande artikelnummer för att gå till artiklar i Microsoft Knowledge Base:



198891 hur du kör en DLL-baserade COM-objekt utanför SQL Server-processen
243428 hur du flyttar utökade lagrade procedurer utanför processen