-
Здраствуйте,
Работаю над проектом на Delphi 5. База даных - Sql Server 2005.
На Vista SP1 + Updates при закрытии ADO DataSet крэш - ошибка в ntdll.dll: "Access violation at address 77A159C3 in module 'ntdll.dll'. Read of address 612C3B11 ..."
Call Stack показал следующее:
...
RtlRaiseStatus
KiUserExceptionDispatcher
@IntfClear
TCustomADODataSet.InternalClose - здесь ошыбка при закрытии рекордсета: "FRecordsetObject := nil;"
TDataSet.CloseCursor
TDataSet.SetActive
TdcADODataSet.SetActive
TDataSet.Close
...
На других ОС работает без ошыбок. Более того работает без ошыбок на Vista если не ставить SP1 и апдейты.
Есть подозрение что проблема в версии MDAC компонентов: на Vista без SP1 версия 6.0.6000.1638, с SP1 и апдейтами - 6.0.6001.16000.
Но вот как изменить версию этих компонентов я не нешел.
Возможно кто нибудь сталкивался с такой ошибкой.
Буду благодарен за любые коментарии.
Спасибо,
Андрей.
-
Скачай последнюю версию MDAC с сайта Microsoft.
-
> Работаю над проектом на Delphi 5
апдейты все стоят? в d5 для ADO были исправления.
-
С Вистой поставляется версия MDAC (только теперь ето WDAC - Windows DAC) версии 6.0 - и ета версия не доступна как отдельный пакет - последняя версия которую можно скачать и установить ето 2.8 - вот только 2.8 не устанавливается на Висте.
-
Да, два апдейта для ADO установлены.
-
А подключаешься через Native client?
-
Нет. Но только что попробывал и через Native Client - та же самая ошибка.
-
Я такое встречал на 98-й, после вирусов, как вылечить не разобрались сделали format C:\ и переустановили винду. Поверх установка тоже не помогла.
-
Такая ошибка в нескольких клиентов на совершенно разных компютерах. Оказалось что та же самая ошибка вискакивает но только очень редко и на XP если на него накатить SP3 - с SP2 все работало без ошибок.
Вчера мне все таки удалось найти WorkAround - датасет работал в режиме LockType := ltBatchOptimistic и пост в базу через вызов FDataSet.UpdateBatch(); Сменил LockType на ltOptimistic и забрал FDataSet.UpdateBatch(); - бизнес логика позволяла такое изменение - все заработало. Пока что оставлю так. Клиенти довольны.
Спасибо всем за помощь.