Моя война с Adodb.connection "Microsoft.Jet.OLEDB.4.0" на 64-х битных серверных ОС (86х)

20.02.13

Администрирование - Сервера

На тонком клиенте в управляемом приложении появилась потребность работы с Adodb.Connection. В моем случае это был драйвер "Microsoft.Jet.OLEDB.4.0". В файловом варианте все взлетело без проблем... А вот в серверном начались проблемы. Решениям этих проблем и посвящается данная статья.

При миграции приложений с MSSQL 2005 и Server 2003 в MSSQL 2008 x64 и Server 2008 x64, я столкнулся с проблемой с ODBC-соединения. Приложение использует системный DSN для подключения к ODBCНастройки были идентичны , в пределах менеджера ODBC работал.

Оказывается, что 32-разрядные приложения не видят уведомления о доставке данных созданных в 64-битном менеджере ODBC, и будет выполнена одна из ошибок описаных ниже.

32-разрядный ODBC Manager находится в C: \ Windows \ SysWOW64 \ odbcad32.exe

При выполнении кода подключения на сервере

DBConn = Новый COMОбъект("ADODB.Connection");
DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Path + ";" +
"Extended Properties=""DBASE IV;"";");

Возникала исключительная ситуация 

(Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Причем на файловой базе все происходило без проблем.

Схема базы:
Серверная 1С "крутилась" на отдельном физическом сервере. Подключение происходило через терминальный сервер (Так же отдельный физический) 

Суть проблемы и решение:

Оказывается Сервер на котором крутился SQL не хотел давать доступ напрямую к реестру и *.dll, которые находились удаленно, а пытался поднять эти библиотеки не пользователь терминального сервера на клиенте, а пользователь от которого была запущена служба сервера 1С на SQL-e (USR1CV82 по дефолту)...

Для адекватной работы нам необходимо дать права на чтение по ключу реестра HKLM\SOFTWARE\ODBC\ODBC.INI для everyone или конкретного пользователя.

Потом зарегистрировать DSN

Ну и провести подключение к Adodb.Connection:

DBConn = Новый COMОбъект("ADODB.Connection");
DBConn.Open("DSN=ODBC_DBase;Dbq=" + Path + ";");

 

После этого подключение взлетело и по аналогии можно подключить любой драйвер. 

Спасибо за внимание ;) 

См. также

Сервера Системный администратор Россия Бесплатно (free)

Основные критерии, на которые необходимо обратить внимание.

31.07.2024    2153    EFSOL_oblako    2    

0

Сервера Системный администратор Россия Бесплатно (free)

Цель данного исследования — сравнить производительность процессоров Intel и AMD при работе с 1С в виртуальной среде Hyper-V.

25.07.2024    4988    EFSOL_oblako    19    

3

Мониторинг Сервера Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

StartPlus и система контроля и сбора информации (настраиваем за час и пользуемся). Данное решение позволяет быстро собирать и анализировать различную информацию из разных источников данных (не обязательно серверов 1С). В любой момент можно менять состав сводной информации без сложной разработки на стороне 1С.

1 стартмани

18.07.2024    713    6    moolex    0    

5

Сервера Linux Системный администратор Россия Бесплатно (free)

Тема Ubuntu, PostgreSQL и 1С уже избитая. Но все же, следуя инструкциям всех мануалов, пришлось потратить около 3-х дней. И как результат — готовые скрипты для установки сервера 1С и PostgreSQL на свежей Ubuntu за 5 минут.

14.06.2024    3209    user1389975    13    

38

Мониторинг Сервера Системный администратор Программист Платформа 1С v8.3 Управляемые формы Абонемент ($m)

Размер, имя информационной базы из реестра кластера (файл 1CV8Clst.lst), дата последнего изменения файлов в каталоге баз (srvinfo\reg_*\uuid) центрального сервера. Отдельно показан размер индекса ППД (полнотекстовый поиск данных) и его актуальность. Полезна в случае, если у вас удалялись базы 1С и никто не озаботился удалением журналов регистрации.

1 стартмани

15.05.2024    1334    20    MaximSh    0    

7

Сервера Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Меня зовут Павел Белоусов, я работаю Ведущим программистом 1С в компании OCS Distribution. Хочу поделиться историей, как мы столкнулись с постоянными зависаниями dev-сервера 1C, каким образом решили проблему и какие любопытные уроки вынесли из ситуации.

12.04.2024    4791    pbelousov    57    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Kyrales 145 21.02.13 08:40 Сейчас в теме
DBConn = Новый COMОбъект("ADODB.Connection");

#Если Сервер Тогда
DBConn.Open("Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + Path + ";" +
"Extended Properties=""DBASE IV;"";");
#Иначе
DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Path + ";" +
"Extended Properties=""DBASE IV;"";");
#КонецЕсли
3. Alexander.Shvets 222 21.02.13 13:48 Сейчас в теме
(1) Kyrales, Microsoft.ACE.OLEDB.12.0 - так же не хотел работать =)))
Дело не какой именно драйвер, а в АДО в целом.
Ваш вариант у меня не взлетел бы =))

И если вы не заметили - это в управляемом приложении...

Процедура у меня полностью выполняется &НаСервере, Хоть в файловом варианте, хоть в серверном и от ширины клиента тут ничего не зависило... Дело в том, где находится серв, где компилируется код...
2. wunderland 202 21.02.13 11:19 Сейчас в теме
Сталкивался с "похожей" ситуацией, в том смысле, что нужно учитывать не только "ГДЕ" выполняется но и "ПОД КЕМ"
4. PiccaHut001 21.02.13 18:00 Сейчас в теме
бывает приходиться заниматься странными вещами. Спасибо за работающий способ
5. Alexander.Shvets 222 21.02.13 18:18 Сейчас в теме
(4) PiccaHut001, всегда рад, если кому то помогло решить проблему или натолкнуло на ее решение =))) ;)
Действительно бывает такое, что вроде бы скриптуешь в 1С, а на самом деле пишешь на SQL и админишь сервера =))).
6. DoctorRoza 21.02.13 20:14 Сейчас в теме
Темная информация, надо запомнить!
7. oberonm 9 22.02.13 08:09 Сейчас в теме
А что мешало выполнять код на стороне клиента? Я давно с таким уже сталкивался и решал вопрос выполнением &НаКлиенте
8. Alexander.Shvets 222 22.02.13 12:20 Сейчас в теме
(7) oberonm, Вот представьте себе большой холдинг, несколько заводов и главное управление, весь учет в одинэссе...
На каждом заводе свой терм.сервер с доменной структурой...
Проще, да и целесообразней на одном сервере решить проблему, чем на каждом терм сервере ставить дрова нужных Одбц...

Да и на клиенте не всегда поюзаешь... В случае регламентного задание, например. В моем случае как раз это и был регламент.
9. Ibrogim 1325 30.09.14 08:13 Сейчас в теме
Однако у меня с парадоксом ваш вариант не взлетел, хотя и вообще никакой не взлетел. Решил переписывать на клиент всё.
2 недели ковыряния коту под хвост (
10. Alexander.Shvets 222 30.09.14 15:36 Сейчас в теме
(9) Ibrogim, а какая ошибка возникала при подключении?
11. Alexander.Shvets 222 30.09.14 15:43 Сейчас в теме
(9) Ibrogim,

Я с парадоксом игрался лет 5 назад, когда писал дипломный проект (1С + Проект на Делфях)
Взлетело без проблем. Но у меня точкой синхронизации выступало приложение на делфях а не 1с. (не 1с коннектор использовал а приложение)

Не знаком с архитектурой Paradox-а. Но, видимо проблема с сервисной стороной БД. Есть ли запущенная служба "слушающая" обращение к базе? Возможно БД у вас работает только с клиентскими вызовами?
Оставьте свое сообщение