SQL Server-Dienst stürzt ab, wenn Sie eine Oracle-Verbindungsserverabfrage ausführen

Gilt für: Microsoft SQL Server 2005 Enterprise EditionSQL Server 2008 EnterpriseSQL Server 2008 R2 Enterprise

Problembeschreibung


Stellen Sie sich folgendes Szenario vor:
  • Sie installieren Microsoft SQL Server auf einem Computer, auf dem Windows Server ausgeführt wird.
  • Sie erstellen einen Verbindungsserver für eine Oracle-Datenbank.
  • Sie aktivieren im Dialogfeld "Optionen" für den Verbindungsserver Anbieter die Option " InProcess zulassen ". Hinweis Standardmäßig ist die Option nicht aktiviert.
  • Sie führen eine Verbindungsserverabfrage mit dem OraOLEDB-Anbieter aus.
In diesem Szenario stürzt der SQL Server-Dienst ab, und es werden keine Ergebnisse für die Abfrage zurückgegeben. Darüber hinaus können die folgenden Probleme auftreten:
  • Im Windows-Systemereignisprotokoll wird die folgende Fehlermeldung angezeigt:
    ---------------------------------- Der SQL Server-Dienst (MSSQLSERVER) wurde unerwartet beendet. Es hat dieses 1 mal (e) getan. ----------------------------------
  • Eine Miniabbild Datei des SQL Server-Prozesses wird mit Heapbeschädigung generiert, und Sie erhalten eine Ausnahmemeldung, die wie folgt aussieht:
    In "Miniabbild. mdmp" die Assembly-Anweisung bei ntdll! RtlReportCriticalFailure + 62 in C:\Windows\System32\ntdll.dll von Microsoft Corporation hat eine unbekannte Ausnahme (0xc0000374) für Thread 235 verursacht Oder manchmal alternativ in einem Fehlerprotokoll kann eine weitere Ausnahme angezeigt werden: SqlDumpExceptionHandler: Process 74 hat eine schwerwiegende Ausnahme c0000005 EXCEPTION_ACCESS_VIOLATION generiert. SQL Server beendet diesen Prozess.
  • Der Stapel der Miniabbild Datei enthält Module von Drittanbietern innerhalb des Prozesses "SQLServer. exe". Beispielsweise enthält die Miniabbild Datei die folgenden Informationen in Oracle-Modulen:
    OraOLEDButl11 OraOLEDBrst11 OraOLEDBrst10 Vollständige Anrufliste: Funktion arg 1 Arg 2 arg 3 arg 4 ntdll! RtlReportCriticalFailure + 62 00000000 ' 00000002 00000000 ' 00000023 00000000 ' 403cc8a2 00000000 ' 00000003 ntdll! RtlpReportHeapFailure + 26 00000000 ' 403c95f0 00000000 ' 403d7a78 00000000 ' 403d7ab0 00000000 ' 4d200e30 ntdll! RtlpHeapHandleError + 12 00000000 ' 04180000 00000000 ' 00000000 00000000 ' 00000000 00000000 ' 00000000 ntdll! RtlpLogHeapFailure + A4 00000000 ' 403d7b40 00000000 ' 04180000 00000000 ' 403d7b50 00000000 ' 00000008 ntdll! RtlFreeHeap + 1aa8f 00000000 ' 00000020 00000000 ' 403cd850 00000000 ' 00000001 00000000 ' 403d0024 ole32! CoTaskMemFree + 36 00000000 ' 403d6b00 00000000 ' 00000001 00000000 ' 4d200e30 00000000 ' 00000024 OraOLEDButl11 + 1a5f 00000000 ' 00000001 00000000 ' 4d200e30 00000000 ' 00000024 00000000 ' 403d7ab8 0x403d6b00 00000000 ' 4d200e30 00000000 ' 00000024 00000000 ' 403d7ab8 00000000 ' 24492843 0x00000001 00000000 ' 00000024 00000000 ' 403d7ab8 00000000 ' 24492843 00000000 ' 403b8c00 0x4d200e30 00000000 ' 403d7ab8 00000000 ' 24492843 00000000 ' 403b8c00 00000000 ' 403c95f0 0x00000024 00000000 ' 24492843 00000000 ' 403b8c00 00000000 ' 403c95f0 00000000 ' 403ca610 0x403d7ab8 00000000 ' 403b8c00 00000000 ' 403c95f0 00000000 ' 403ca610 00000000 ' 403ca610 OraOLEDBrst11 + 12843 00000000 ' 403c95f0 00000000 ' 403ca610 00000000 ' 403ca610 00000000 ' 403c95f0 0x403b8c00 00000000 ' 403ca610 00000000 ' 403ca610 00000000 ' 403c95f0 00000000 ' 244928b1 0x403c95f0 00000000 ' 403ca610 00000000 ' 403c95f0 00000000 ' 244928b1 00000000 ' 403d7ab8 0x403ca610 00000000 ' 403c95f0 00000000 ' 244928b1 00000000 ' 403d7ab8 00000000 ' 403c95f0 0x403ca610 00000000 ' 244928b1 00000000 ' 403d7ab8 00000000 ' 403c95f0 00000000 ' 4966a260 0x403c95f0 00000000 ' 403d7ab8 00000000 ' 403c95f0 00000000 ' 4966a260 00000000 ' 05cd21e0 OraOLEDBrst11 + 128b1 00000000 ' 403c95f0 00000000 ' 4966a260 00000000 ' 05cd21e0 00000000 ' 00000000 0x403d7ab8 00000000 ' 4966a260 00000000 ' 05cd21e0 00000000 ' 00000000 00000000 ' 2449ca03 0x403c95f0 00000000 ' 05cd21e0 00000000 ' 00000000 00000000 ' 2449ca03 00000000 ' 4d200e30 0x4966a260 00000000 ' 00000000 00000000 ' 2449ca03 00000000 ' 4d200e30 00000000 ' 00000001 0x05cd21e0 00000000 ' 2449ca03 00000000 ' 4d200e30 00000000 ' 00000001 00000000 ' 05cd21e0

Ursache


Dieses Problem tritt auf, weil die Sonderzeichen "--" in der Abfrage auf dem Oracle-Verbindungsserver vorhanden sind. Diese Zeichen werden als Kommentarsymbol verwendet.

Der SQL Server-Prozess stürzt ab, da der Drittanbieter-Link Server Anbieter innerhalb des SQL Server-Prozesses geladen wird und der Heapspeicher, der nicht zu ihm gehört, fälschlicherweise geändert wird. Wenn der Standardheap innerhalb eines Prozesses instabil ist, wird der Prozess zum Schutz vor Datenbeschädigung automatisch vom Betriebssystem beendet. Wenn der Drittanbieter-Verbindungsserver Anbieter zusammen mit der Option "InProcess zulassen" aktiviert ist, stürzt der SQL Server-Prozess ab, wenn der beschriebene Fehler durch diesen Verbindungsserver eines Drittanbieters auftritt.

Problemumgehung


Wenden Sie eine der folgenden Methoden an, um dieses Problem zu umgehen:
  • Entfernen Sie das Kommentarsymbol.
  • Ersetzen Sie das Kommentarsymbol durch das folgende Kommentarsymbol: 
    /* */

Weitere Informationen


Bitte wenden Sie sich für Informationen und Korrekturen an den Drittanbieter. Aktuelle Version des OLEDB-Anbieters finden Sie unter: