SQL Server-tjänsten kraschar när du kör en oracle-länkad serverfråga

Den här artikeln hjälper dig att lösa ett problem som kan uppstå när du kör en Oracle-länkad serverfråga.

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2295405

Symptom

Tänk dig följande situation:

  • Du installerar SQL Server på en dator som kör Windows Server.
  • Du skapar en länkad server för en Oracle-databas.
  • Du kör en länkad serverfråga med oraOLEDB-providern (OLEDB-providern för Oracle).

I det här scenariot kraschar SQL Server-tjänsten och inga resultat returneras för frågan. Dessutom kan du märka följande problem:

  • Du får följande felmeddelande i händelseloggen för Windows-systemet:

    Tjänsten SQL Server (MSSQLSERVER) avslutades oväntat. Det har gjort detta 1 gång(ar).

  • En minidumpfil av SQL Server-processen genereras med heap-skada och du får ett undantagsmeddelande som liknar följande:

    I minidump.mdmp monteringsinstruktionen på ntdll! RtlReportCriticalFailure+62 i C:\Windows\System32\ntdll.dll från Microsoft Corporation har orsakat ett okänt undantag (0xc0000374) på tråd 235
    Eller ibland kan du också se ett annat undantag i felloggen:
    SqlDumpExceptionHandler: Process 74-genererat allvarligt undantag c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server avslutar den här processen.

  • Stacken för minidump-filen innehåller moduler från tredje part i Sqlserver.exe processen. Minidump-filen innehåller till exempel följande information i Oracle-modulerna:

    OraOLEDButl11
    OraOLEDBrst11
    OraOLEDBrst10
    
    Full Call Stack:
    
    ntdll!RtlReportCriticalFailure+62 
    ntdll!RtlpReportHeapFailure+26 
    ntdll!RtlpHeapHandleError+12 
    ntdll!RtlpLogHeapFailure+a4 
    ntdll!RtlFreeHeap+1aa8f 
    ole32!CoTaskMemFree+36 
    OraOLEDButl11+1a5f 
    0x403d6b00 
    0x00000001 
    0x4d200e30 
    0x00000024 
    0x403d7ab8 
    OraOLEDBrst11+12843 
    0x403b8c00 
    0x403c95f0 
    0x403ca610 
    0x403ca610 
    0x403c95f0 
    OraOLEDBrst11+128b1 
    0x403d7ab8 
    0x403c95f0 
    0x4966a260 
    0x05cd21e0 
    

Ansvarsfriskrivning för information från tredje part

De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.

Orsak

Det här problemet beror på att specialtecken -- finns i frågan till den Oracle-länkade servern. Dessa tecken används för att ange en kommentarssymbol.

Den SQL Server processen kraschar eftersom den länkade serverprovidern från tredje part läses in i SQL Server process och felaktigt ändrar heapminne som inte tillhör den. Om Heap Functions i en process är instabil, för skydd mot skadade data, stängs processen automatiskt av av operativsystemet. Om den länkade serverprovidern från tredje part är aktiverad tillsammans med alternativet Tillåt inprocess kraschar SQL Server processen när den länkade servern från tredje part upplever det beskrivna problemet.

Lösning

I vissa fall löser en av följande metoder problemet:

  • Ta bort kommentarssymbolen.
  • Ersätt kommentarssymbolen med /* */.

Åtgärd

Kontakta tredjepartsleverantören för information och de senaste korrigeringarna. Den senaste OLEDB-providerversionen finns i 64-bitars nedladdningar av Oracle Data Access Components (ODAC).