|
Соединение из 1С с Oracle через ADODB | ☑ | ||
---|---|---|---|---|
0
Child_Men
05.05.15
✎
10:41
|
На сервере установлена 64-разрядная Windows Server Enterprise SP2
Установлен ODAC121012_x64 Настроен DSN для ODBC x64, - тестирование подключения проходит успешно Для соединения использую код: СтрокаПодключения = "DSN=ИмяDSN;Uid=Пользователь;Pwd=Пароль;"; Попытка Connection.Open(СтрокаПодключения); Command.ActiveConnection = Connection; Command.CommandText = ЗапросSQL; RecordSet = Command.Execute(); Connection.Close(); Connection = Неопределено; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Валится на строке: Connection.Open(СтрокаПодключения); С ошибкой: {Форма.Форма.Форма(84)}: Ошибка при вызове метода контекста (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
Child_Men
05.05.15
✎
10:43
|
Соединение. соответственно объявляю так:
Connection = Новый COMОбъект("ADODB.Connection"); |
|||
2
ДенисЧ
05.05.15
✎
10:43
|
На 64бит там много тонкостей...
Одна из которых, что помню - особенности содержимого PATH - путь к клиенту должен быть первым в строке... Но всё уже не вспомню, помню только, что возился недели 2, пока заработало всё... |
|||
3
Child_Men
05.05.15
✎
10:51
|
Тоже 2-ю неделю вожусь....
Содержимое PATH: (путь до клиента на первом месте) F:\Oracle\product\12.1.0\client_1\bin; F:\Oracle\product\12.1.0\client_1 |
|||
4
ДенисЧ
05.05.15
✎
10:52
|
Ещё как-то игрался с битностью клиента.
Кажется, ставил в конце концов 32бит... |
|||
5
Child_Men
05.05.15
✎
11:32
|
Установил 32-х битного клиента
Через DSN - тест соединения прошел успешно При попытке соединения через ADO вываливается с ошибкой: {Форма.Форма.Форма(92)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию |
|||
6
Apokalipsec
05.05.15
✎
11:51
|
СтрокаПодключения = "Provider=MSDASQL.1;Data Source=test2;UID=***;Password=***";
Не указываешь используемый провайдер. |
|||
7
Child_Men
05.05.15
✎
12:11
|
когда строка подключения:
"DSN=ИмяDSN;Uid=Пользователь;Pwd=Пароль;", Provider=MSDASQL.1 - подставляется автоматически (смотрел через отладчик) |
|||
8
МихаилМ
05.05.15
✎
12:36
|
проблему подключения через odbc удобно проверять через
http://alekseyrybakov.narod.ru/ViewODBC.html тк в ней есть 32 64 битные версии. |
|||
9
МихаилМ
05.05.15
✎
12:36
|
+(8) генерируется строка подключения.
|
|||
10
Child_Men
05.05.15
✎
13:39
|
Сгенерировал строку подключения этой утилиткой и использовал ее
Все равно ошибка: {Форма.Форма.Форма(95)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Не удается загрузить указанный драйвер из-за системной ошибки 127 (Oracle in OraClient12Home2). |
|||
11
Child_Men
05.05.15
✎
13:42
|
Т.е. через утилитку соединяется и 32-х и 64-х битная версия,
а через внешнюю обработку не хочет |
|||
12
art_id
05.05.15
✎
14:01
|
у меня такая строка подключения к оракл
"Provider=OraOLEDB.Oracle.1;User ID=user;Data Source=db; Password=pass" |
|||
13
Child_Men
05.05.15
✎
14:50
|
Если указываю строку, как в (11), пишет следующее:
{Форма.Форма.Форма(99)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Provider): Разрушительный сбой |
|||
14
Kurbash
05.05.15
✎
15:02
|
а в переменных среды путь к клиенту оракловому указан?
|
|||
15
Мэс33
05.05.15
✎
15:04
|
Если подключаешься через клиента 1С - то он ведь 32битный, и надо ставить 32битного клиента Oracle.
А вот если надо чтобы к примеру фоновый процесс лез в оракл - то тут я не смог победить ораклового клиента))). |
|||
16
Мэс33
05.05.15
✎
15:06
|
И настраивать надо через свои утилиты для каждой версии:
The 32-bit version of the Odbcad32.exe file is located in the %systemdrive%\Windows\SysWoW64 folder. The 64-bit version of the Odbcad32.exe file is located in the %systemdrive%\Windows\System32 folder. |
|||
17
Child_Men
05.05.15
✎
15:15
|
(14) да, - указан
|
|||
18
Мэс33
05.05.15
✎
15:17
|
@Есть учетная система на СУБД Oracle из которой надо как читать, так и записывать в нее данные @
Надо читать фоновым серверным процессом? |
|||
19
Child_Men
05.05.15
✎
15:18
|
(16) - подключаться пытаюсь из клиент-серверной базы
На клиентской машине - 64-битная система На сервере - 64-битая система |
|||
20
Child_Men
05.05.15
✎
15:19
|
(18) планировалось, что будет настроено регламентное задание
|
|||
21
Мэс33
05.05.15
✎
15:35
|
(20) если получится - можете выложить рецепт?
|
|||
22
Child_Men
05.05.15
✎
15:49
|
(21) ап чем речь )
|
|||
23
Apokalipsec
05.05.15
✎
16:13
|
Сейчас подключаешься с клиента? 1Сина таки 32х разрядная, если не на сервере выполняешь.
|
|||
24
Child_Men
05.05.15
✎
17:05
|
(23) подключаюсь с клиента (на клиенте установлена 64-разрядная ОС)
База клиент-серверная На сервере установлена 64-разрядная ОС |
|||
25
Child_Men
05.05.15
✎
17:27
|
Попробовал такое:
1. Создал файловую базу 2. Установил на клиентской машине 32-х битного клиента оракла 3. Настроил на клиентской машине DNS с использованием драйвера 32-х битного клиента оракла Запускаю внешнюю обработку с кнопкой, по которой должно устанавливаться соединение через ADO из файловой базы 1с - в результате соединение нормально устанавливается |
|||
26
Child_Men
05.05.15
✎
17:30
|
пробовал устанавливать 32-х битного клиента на сервер (где крутится агент сервера 1с) и запускать ту же самую обработку - 32-х битный драйвер не находится, соединение соответственно не устанавливается
|
|||
27
Child_Men
05.05.15
✎
17:37
|
т.е. не работает соединение через ADO, когда: запуск из под клиент-серверной базы с клиента + 64-битный клиент оракла на сервере с настроенным DSN
|
|||
28
Nik_EV
06.05.15
✎
08:32
|
Была такая проблема с 11 Oracle. Решили ее установкой 32-разрядного сервера 1С, т.е. кластер серверов состоял из 64-разрядного сервера(основного) и 32-разрядного(для запуска процессов которые работали с 32-разрядными дровами Oracle). Через "Требования назначения функциональности" указали что выполнять на этих серверах
|
|||
29
Child_Men
06.05.15
✎
09:03
|
(28) А можно по подробнее, что-то типа мини-инструкции (шаг 1, шаг 2, шаг 3). Очень нужно!!!
|
|||
30
Nik_EV
07.05.15
✎
11:05
|
1. На сервер 1С устанавливаем еще один "сервер предприятия 1с"(32-разрядного) запускаем службу по другому порту.
2. В консоли "Администрирование серверов 1С" для нашего локального кластера добавляем 32-разрядный сервер 1С. Т.е. кластер серверов теперь состоит из 64-разрядного сервера(основной) и из 32-разрядного(дополнительный). 3. В "Требования назначения функциональности" основного сервера добавляем новое требование. В "объекте требования" выбираем "Сервис работы с внешними источниками данных через ODBC" (т.к. мне необходимо было чтобы работа с ВИД велась через 32-разрядный сервер 1С. Для запуска рег. задания необходимо выбрать объект требования "Клиентское соединение с ИБ" и указать в значение доп. параметра что-то типа "BackgroundJob.CommonModule.РегламентныеЗадания.ЗагрузитьОстатки"), тип требования - не назначать. 4.В "Требования назначения функциональности" дополнительного сервера делаем тоже самое что и в п.3,только тип требования - назначать. 5.В "Требования назначения функциональности" дополнительного сервера добавляем еще одно требование: объект требования "для всех",тип требования - не назначать. 6. В свойствах локального кластера нажимаем кнопку применить требования назначения функциональности |
|||
31
sapphire
07.05.15
✎
12:57
|
(0) tnsnames.ora настроен?
Какого вида строки соединения пробовали? |
|||
32
sapphire
07.05.15
✎
12:58
|
+(31) Вызов на клиенте/сервере?
|
|||
33
Child_Men
08.05.15
✎
15:30
|
(30) Спасибо, будем пробовать )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |