Ошибка R6034 в MSACCESS.EXE с последующей ошибкой во время выполнения '-2147023782 (8007045a)'
У меня есть эти сообщения об ошибках при запуске MS-Access
приложение (имеет VBA
код).
Когда я нажимаю OK в первом сообщении об ошибке и отлаживаю во втором, открывается отладчик и указывает на строку, которая говорит: "Set oServer = New SQLDMO.SQLServer
"
Я понимаю, что это проблема с SQL-DMO, но не могу зарегистрировать DLL.
Моя среда: Win7 Pro 64-bit
, Office 2010 64-bit
, MS SQL Server 2008 R2 SP2 64-bit
,
Я скачал пакет обратной совместимости от Microsoft, запустил MSI
, и ничего. Пробовал вручную устанавливать и получать сообщения об ошибках:
R6034
заC:\Windows\System32\regsvr32.exe
и когда я нажимаю Ok -> Модуль "SQLDMO.DLL
" ошибка загрузки.Make sure the binary is stored at the specified path or debug it
... бла-бла- Когда я пытаюсь зарегистрировать его из
C:\Windows\SysWOW64
, Я получил "The module "SQLDMO.DLL" may not (be) compatible with the version of Windows that you're running. Check if the module is compatible with....
Я проверил версию SQLDMO.DLL
и это определенно 64-битный. Я нашел все остальные библиотеки DLL, которые нужны SQL-DMO, и сохранил их в SysWOW64
а также System32
,
Я бегал Office repair
, Windows Update
, SQL Server repair
(файл журнала указывает проход для всего для Client Tools обратной совместимости).
Буду признателен за любую оказанную помощь. Спасибо, Мики.
1 ответ
Не знаю, как мне это удалось, но (каким-то образом) удалось зарегистрировать 64-разрядную SQLDMO.DLL (до того, как она не была зарегистрирована), а затем в моем коде VBA -> Инструменты -> Ссылки. Я пытался загрузить SQLDMO.DLL из 64-битной папки. Сначала это не сработало, а затем я поместил копию DLL в SysWOW64 (которая является 32-битной папкой) и зарегистрировал ее оттуда (как только она была зарегистрирована, очевидно, системе она там не нужна) больше - я убрал его, и он все еще работает). Затем я попытался понять, как это работает. Я проверил в справочной таблице в коде VBA, и библиотека объектов Microsoft SQLDMO по-прежнему указывает на C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn, но когда я удалил SQLDMO.DLL оттуда, все еще работал... Затем я посмотрел в C:\Program Files\Microsoft SQL Server\80\Tools\Binn и удалил оттуда SQLDMO.DLL, после чего он перестал работать! Я понятия не имею, что произошло, или почему справочная таблица говорит, что она указывает на одну папку, но на самом деле указывает на другую, или как после той же попытки раньше, только сейчас это работает. Я хотел бы иметь возможность повторить это (в случае, если мне нужно пройти этот процесс снова), поэтому любые идеи / предложения будут с благодарностью. Спасибо, Мики.