Моя война с 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 + ";");

 

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

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

См. также

Администрирование веб-серверов Сервера Системный администратор Программист Абонемент ($m)

WEB приложение для управления сеансами сервера 1С, имеет адаптивный web интерфейс. Возможности: удаление сеансов; завершение rphost процессов; запуск службы 1С сервера (если остановлена). Используется авторизация BasicAuth с защитой от брутфорса. Поддерживает работу по http https протоколам.

1 стартмани

08.11.2024    629    8    gortrex    2    

3

Облачные сервисы, хостинг Linux Тестирование QA Сервера Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Завершающая публикация цикла "В облако на работу:.. Рецепты от Капитана", в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием, отказоустойчивостью и прочая, прочая... В этой статье мы определяемся с быстродействием системы, проводим нагрузочное тестирование и отпускаем ее в свободное плавание (зачеркнуто) выпускаем ее в продуктовый контур, где, конечно же, придется отлавливать ошибки, мониторить состояние и т.п.

31.10.2024    1497    capitan    0    

0

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

На первый взгляд, добавление второго сервера в кластер 1С не должно вызывать проблем – все просто должно работать. Но на практике дело обстоит иначе. Несмотря на то, что все действительно работает, многие при этом сталкиваются с трудностями. Расскажем, когда нужно задуматься о втором сервере 1С в кластере, какие особенности работы второго сервиса с файлами и сервисами, и какие настройки ТНФ можно сделать для лицензий ПРОФ и КОРП.

31.10.2024    9211    a.doroshkevich    21    

68

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

Отдельный сервер лицензирования упрощает администрирование лицензий в сложных структурах с несколькими кластерами и тысячами пользователей. Расскажем о том, как настроить резервирование лицензий для крупной компании с высокими требованиями к доступности SLA 99.98% и автоматизировать переактивацию лицензий в случае возможных сбоев.

29.10.2024    2433    jul.dolganova    8    

16

Облачные сервисы, хостинг Linux Сервера Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Одна из завершающих публикаций цикла "В облако на работу:.. Рецепты от Капитана", в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием и прочая, прочая... На закуску разбираемся с отказоустойчивостью. В этой публикации для серверов 1С заодно попробуем подобно сериалу «Разрушители легенд» подтвердить или опровергнуть пару устойчивых мифов о требованиях назначения функциональности.

18.10.2024    1976    capitan    5    

12

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

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

31.07.2024    2427    EFSOL_oblako    2    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 1323 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-а. Но, видимо проблема с сервисной стороной БД. Есть ли запущенная служба "слушающая" обращение к базе? Возможно БД у вас работает только с клиентскими вызовами?
Оставьте свое сообщение