Соединение из 1С с Oracle через ADODB #741928


#0 by Child_Men
На сервере установлена 64-разрядная Windows Server Enterprise SP2 Установлен ODAC121012_x64 Настроен DSN для ODBC x64, - тестирование подключения проходит успешно Для соединения использую код: Валится на строке: С ошибкой: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Не удается загрузить указанный драйвер из-за системной ошибки  127 (Oracle in OraClient12Home2). При чем через внешние источники данных для такой же строки подключения - соединение выполняется успешно, проблема именно при соединении через ADODB Что делали: 1. Пробовали разные строки подключения - соединение не работает 2. Переустановили ODAC - не помогло 3. Переустанавили ODAC и Сервер 1С (Сразу после переустановки ODAC и Сервера 1С соединение через ADO заработало, на следующий день перестало работать с той же ошибкой) Что не так делаю? Зачем все это нужно: Есть учетная система на СУБД Oracle из которой надо как читать, так и записывать в нее данные Данные на чтение получаю через Внешние источники данных (через ADO возникала проблема с кодировками, а через ВИД проблем нет) Записывать хочу через ADODB (потому что значения некоторых полей нужно генерировать на лету с помощью SEQUENCE оракла)
#1 by Child_Men
Соединение. соответственно объявляю так:
#2 by ДенисЧ
На 64бит там много тонкостей... Одна из которых, что помню - особенности содержимого PATH - путь к клиенту должен быть первым в строке... Но всё уже не вспомню, помню только, что возился недели 2, пока заработало всё...
#3 by Child_Men
Тоже 2-ю неделю вожусь.... Содержимое PATH: (путь до клиента на первом месте) F:Oracleproduct12.1.0client_1in; F:Oracleproduct12.1.0client_1
#4 by ДенисЧ
Ещё как-то игрался с битностью клиента. Кажется, ставил в конце концов 32бит...
#5 by Child_Men
Установил 32-х битного клиента Через DSN - тест соединения прошел успешно При попытке соединения через ADO вываливается с ошибкой: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
#6 by Apokalipsec
СтрокаПодключения = "Provider=MSDASQL.1;Data Source=test2;UID=***;Password=***"; Не указываешь используемый провайдер.
#7 by Child_Men
когда строка подключения: "DSN=ИмяDSN;Uid=Пользователь;Pwd=Пароль;", Provider=MSDASQL.1 - подставляется автоматически (смотрел через отладчик)
#8 by МихаилМ
проблему подключения через odbc удобно проверять через тк в ней есть 32 64 битные версии.
#9 by МихаилМ
+ генерируется строка подключения.
#10 by Child_Men
Сгенерировал строку подключения этой утилиткой и использовал ее Все равно ошибка: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Не удается загрузить указанный драйвер из-за системной ошибки  127 (Oracle in OraClient12Home2).
#11 by Child_Men
Т.е. через утилитку соединяется и 32-х и 64-х битная версия, а через внешнюю обработку не хочет
#12 by art_id
у меня такая строка подключения к оракл "Provider=OraOLEDB.Oracle.1;User ID=user;Data Source=db; Password=pass"
#13 by Child_Men
Если указываю строку, как в , пишет следующее: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Provider): Разрушительный сбой
#14 by Kurbash
а в переменных среды путь к клиенту оракловому указан?
#15 by Мэс33
Если подключаешься через клиента 1С - то он ведь 32битный, и надо ставить 32битного клиента Oracle. А вот если надо чтобы к примеру фоновый процесс лез в оракл - то тут я не смог победить ораклового клиента))).
#16 by Мэс33
И настраивать надо через свои утилиты для каждой версии: The 32-bit version of the Odbcad32.exe file is located in the %systemdrive%WindowsSysWoW64 folder. The 64-bit version of the Odbcad32.exe file is located in the %systemdrive%WindowsSystem32 folder.
#17 by Child_Men
да, - указан
#18 by Мэс33
@Есть учетная система на СУБД Oracle из которой надо как читать, так и записывать в нее данные @ Надо читать фоновым серверным процессом?
#19 by Child_Men
- подключаться пытаюсь из клиент-серверной базы На клиентской машине - 64-битная система На сервере - 64-битая система
#20 by Child_Men
планировалось, что будет настроено регламентное задание
#21 by Мэс33
если получится - можете выложить рецепт?
#22 by Child_Men
ап чем речь )
#23 by Apokalipsec
Сейчас подключаешься с клиента? 1Сина таки 32х разрядная, если не на сервере выполняешь.
#24 by Child_Men
подключаюсь с клиента (на клиенте установлена 64-разрядная ОС) База клиент-серверная На сервере установлена 64-разрядная ОС
#25 by Child_Men
Попробовал такое: 1. Создал файловую базу 2. Установил на клиентской машине 32-х битного клиента оракла 3. Настроил на клиентской машине DNS с использованием драйвера 32-х битного клиента оракла Запускаю внешнюю обработку с кнопкой, по которой должно устанавливаться соединение через ADO из файловой базы 1с - в результате соединение нормально устанавливается
#26 by Child_Men
пробовал устанавливать 32-х битного клиента на сервер (где крутится агент сервера 1с) и запускать ту же самую обработку - 32-х битный драйвер не находится, соединение соответственно не устанавливается
#27 by Child_Men
т.е. не работает соединение через ADO, когда: запуск из под клиент-серверной базы с клиента + 64-битный клиент оракла на сервере с настроенным DSN
#28 by Nik_EV
Была такая проблема с 11 Oracle. Решили ее установкой 32-разрядного сервера 1С, т.е. кластер серверов состоял из 64-разрядного сервера(основного) и 32-разрядного(для запуска процессов которые работали с 32-разрядными дровами Oracle). Через "Требования назначения функциональности" указали что выполнять на этих серверах
#29 by Child_Men
А можно по подробнее, что-то типа мини-инструкции (шаг 1, шаг 2, шаг 3). Очень нужно!!!
#30 by Nik_EV
1. На сервер 1С устанавливаем еще один "сервер предприятия 1с"(32-разрядного) запускаем службу по другому порту. 2. В консоли "Администрирование серверов 1С" для нашего локального кластера добавляем 32-разрядный сервер 1С. Т.е. кластер серверов теперь состоит из 64-разрядного сервера(основной) и из 32-разрядного(дополнительный). 3. В "Требования назначения функциональности" основного сервера добавляем новое требование. В "объекте требования" выбираем "Сервис работы с внешними источниками данных через ODBC" (т.к. мне необходимо было чтобы работа с ВИД велась через 32-разрядный сервер 1С. Для запуска рег. задания необходимо выбрать объект требования "Клиентское соединение с ИБ" и указать в значение доп. параметра что-то типа "BackgroundJob.CommonModule.РегламентныеЗадания.ЗагрузитьОстатки"), тип требования - не назначать. 4.В "Требования назначения функциональности" дополнительного сервера делаем тоже самое что и в п.3,только тип требования - назначать. 5.В "Требования назначения функциональности" дополнительного сервера добавляем еще одно требование: объект требования "для всех",тип требования - не назначать. 6. В свойствах локального кластера нажимаем кнопку применить требования назначения функциональности
#31 by sapphire
tnsnames.ora настроен? Какого вида строки соединения пробовали?
#32 by sapphire
+ Вызов на клиенте/сервере?
#33 by Child_Men
Спасибо, будем пробовать )
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С