COM-объект ADODB не найден - PullRequest
2 голосов
/ 19 июля 2011

Я использую COM-объект ADODB в моем приложении c #, которое разработано в 64-разрядной версии Windows 2008 R2 Standard.Теперь я переместил приложение на prod сервер с Windows 2008 Standard 64bit (не R2), и теперь я получаю сообщение об ошибке ниже.Кажется, MDAC 2.8 не установлен на моей машине?Я не могу найти ссылки, как установить MDAC 2.8 на компьютере с Windows 2008, может быть, кто-то может указать мне правильное направление?

Ошибка: не удалось преобразовать объект COM типа 'ADODB.StreamClass' в тип интерфейса 'ADODB._Stream.Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{00001565-0000-0010-8000-00AA006D2EA4}' завершился ошибкой из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).,

Ответы [ 2 ]

4 голосов
/ 19 июля 2011

В Windows Server 2008 R2 SP1 интерфейсы ADO COM были изменены. В результате любое приложение ADO, скомпилированное в системе с Windows 7 SP1 или Server 2008 R2 SP1 , не будет работать в более старых операционных системах (таких как Server 2008 не-R2).

Вот ссылка на статью базы знаний, описывающую эту проблему (KB2517589):

Статья также содержит несколько обходных путей, в частности, она ссылается на «библиотеку типов совместимости», которую вы можете использовать для компиляции на своем компьютере разработчика.

К сожалению, пока нет «реального» решения для этой проблемы (что особенно болезненно для разработчиков VBA, где единственным текущим решением является удаление Windows 7 SP1 на компьютере разработчика). На форумах Microsoft есть ветка, где обсуждается эта проблема и где публикуются обновления:


ОБНОВЛЕНИЕ : Тем временем Microsoft выпустила исправление для этой проблемы. Если вы установите исправление со следующей страницы (KB 2640696) на компьютере для разработки под управлением Windows 7 SP1 / 2008R2 SP1 и перекомпилируете приложение, оно снова будет работать в старых операционных системах:

1 голос
/ 19 июля 2011

Может быть, вы можете попробовать следующую утилиту, чтобы определить, действительно ли она есть: Утилита MDAC: Проверка компонентов http://www.microsoft.com/download/en/details.aspx?id=1953 В ней не упоминается Windows Server 2008, но, возможно, она работает ...

Если вы уверены, что на этом сервере нет COM-объекта ADODB, вам необходимо установить компоненты MDAC2.8, которые можно также загрузить из Microsoft.

Ссылка: http://www.microsoft.com/download/en/details.aspx?id=5793

Кроме того, в Windows Server 2008 вы можете перейти в папку: C: \ Program Files \ Common Files \ System \ ado и проверить, есть ли там компоненты MDAC.Для MDAC 2.8 вы должны иметь: msado28.tlb, который вы можете использовать для ссылки на объекты ADODB в проекте MS OFfice VBA.

...