Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Эта статья поможет устранить проблему, которая может возникнуть при выполнении запроса связанного сервера Oracle.
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 2295405
Симптомы
Рассмотрим следующий сценарий:
- Sql Server устанавливается на компьютере под управлением Windows Server.
- Вы создаете связанный сервер для базы данных Oracle.
- Запрос связанного сервера выполняется с помощью поставщика OraOLEDB (поставщик OLEDB для Oracle).
В этом сценарии служба SQL Server завершает работу, и для запроса не возвращаются результаты. Кроме того, вы можете заметить следующие проблемы:
В системном журнале событий Windows появится следующее сообщение об ошибке:
Служба SQL Server (MSSQLSERVER) неожиданно завершается. Это сделал 1 раз.
Мини-файл процесса SQL Server создается с повреждением кучи, и вы получаете сообщение об исключении, похожее на следующее:
В minidump.mdmp инструкция сборки по ntdll! RtlReportCriticalFailure+62 в C:\Windows\System32\ntdll.dll от корпорации Майкрософт вызвало неизвестное исключение (0xc0000374) в потоке 235
Или иногда в журнале ошибок можно увидеть другое исключение:
SqlDumpExceptionHandler: процесс 74 создал неустранимый исключение c000005 EXCEPTION_ACCESS_VIOLATION. SQL Server завершает этот процесс.Стек мини-файла содержит сторонние модули внутри процесса Sqlserver.exe . Например, мини-dump-файл содержит следующие сведения в модулях Oracle:
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
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Причина
Эта проблема возникает из-за того, что специальные символы -- существуют в запросе к связанному серверу Oracle. Эти символы используются для обозначения символа комментария.
Процесс SQL Server завершается сбоем, так как сторонний поставщик связанного сервера загружается внутри процесса SQL Server и неправильно изменяет память кучи, которая не принадлежит ей. Если функции кучи внутри процесса неустойчивы, для защиты от повреждения данных процесс автоматически завершается операционной системой. Если сторонний поставщик связанного сервера включен вместе с параметром Allow inprocess , процесс SQL Server завершается сбоем, когда сторонний связанный сервер испытывает описанную проблему.
Обходное решение
В некоторых случаях один из следующих методов решает проблему:
- Удалите символ примечаний.
- Замените символ
/* */примечаний на .
Решение
Обратитесь к стороннему поставщику для получения сведений и последних исправлений. Последние версии поставщика OLEDB см . в 64-разрядных файлах загрузки компонентов доступа к данным Oracle (ODAC).