Имя: Пароль:
1C
 
v8: Не дружат 1С 8.2 и Оракл

0 ygrekxyz
 
13.05.10
15:23
Подскажите, что может быть. Есть база на 7.7. Из нее по нажатию какой-то кнопочки устанавливается соединение с другой базой под ораклом.

Решили переписать прогу с 7.7 на 8.2 упр. приложение.
Взяли рабочий кусок из 7.7

Con = "Provider=MSDAORA;Password=aaa;User ID=bbb;Data Source=OSTART;Persist Security Info=True;";
   Попытка
       StrConnection = СокрЛП(Парам.Con);
       Cn=CreateObject("ADODB.Connection");
       cn.Open(StrConnection);
       rs=CreateObject("ADODB.RecordSet");
   Исключение
       Сообщить("Connection к СТАРТУ не установлен");
   КонецПопытки;    

Перевели его на 8.2

&НаСервере
Функция Удал()
   Con = "Provider=MSDAORA;Password=aaa;User ID=bbb Source=OSTART;Persist Security Info=True;";    
   Попытка
       StrConnection = СокрЛП(Con);
       Cn=Новый COMОбъект("ADODB.Connection");
       cn.Open(StrConnection);
       rs=Новый COMОбъект("ADODB.RecordSet");
       Возврат "Все ОК";
   Исключение
       Возврат ОписаниеОшибки();
   КонецПопытки;  
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
   Сообщить(Удал());
КонецПроцедуры

Запускаем на одной и той же машине под 7.7 - устанавливается коннект, под 8.2 нет.

Ругается:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): Oracle client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation.

Provider is unable to function until these components are installed.

Что не так?
1 Волшебник
 
13.05.10
15:24
Это ошибка не связана с 1С
2 Apokalipsec
 
13.05.10
15:26
ругается, что клиента оракловского нету.
3 Волшебник
 
13.05.10
15:27
Может программный код исполняется на сервере, а там не установлены Oracle client and networking components
4 Волшебник
 
13.05.10
15:27
ну точно &НаСервере
5 sapphire
 
13.05.10
15:28
(1) Это точно :D
(2) А на сервере 8.2 установлен клиент оракла для всех учеток и под учеткой рпхоста виден tns файл?
6 ygrekxyz
 
13.05.10
15:29
1с 7.7 и 8.2 запускается на машине, где стоит 1С-сервер приложения, на ней же стоит оракловый 9-й клиент
7 Sj
 
13.05.10
15:30
Попробуй убрать "Попытка"
8 ygrekxyz
 
13.05.10
15:31
(7) Смысл?
9 ygrekxyz
 
13.05.10
15:33
(5) на каталог C:\oracle\ora92 даны права учетке Everyone на чтение
10 ygrekxyz
 
13.05.10
15:34
В одной и той же сессии запускаешь 7.7 пашет, 8.2 нет - в чем может быть причина, особо если 1С не причем?
11 Apokalipsec
 
13.05.10
15:36
(9) http://forums.oracle.com/forums/thread.jspa?messageID=4124648

тут несколько вариантов решений.Возможно вам подойдет какой-нибудь.
12 Sj
 
13.05.10
15:46
(8) чтобы понять в какой именно строке ошибка
13 sapphire
 
13.05.10
15:48
(10) В том, что , возможно учетка сервера 8.2 не видит ораклового клиента
14 sapphire
 
13.05.10
15:52
Ха, а часом OSTART не Пользовательский DSN??????
15 ygrekxyz
 
13.05.10
15:52
(13)служба - Агент сервера 1С:Предприятия 8.2 запущен от имени сетевой учетки администратора домена
16 sapphire
 
13.05.10
15:53
(12) И так понятно в какой строке, там можно подумать тьма тьмущая методов Open объекта Connection
17 ygrekxyz
 
13.05.10
15:53
(14) в tnsnames.ora
OSTART =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.115.36)(PORT = 1520))
   )
   (CONNECT_DATA =
     (SERVICE_NAME = OSTART)
   )
 )
18 sapphire
 
13.05.10
15:53
(15) См. (14)
19 Sj
 
13.05.10
15:54
(16) не факт. поэтому и прошу убрать.
20 sapphire
 
13.05.10
15:55
(17) А если попробовать так:
Con = "Provider=ORAOLEDB.Oracle;Server=172.16.115.36;Data Source=OSTART;User Id=bbb ;password=aaa";
21 Sj
 
13.05.10
15:55
в 7.7.         StrConnection = СокрЛП(Парам.Con);
в 8         StrConnection = СокрЛП(Con);
22 Sj
 
13.05.10
15:57
User ID=bbb
нет точки запятой
23 ygrekxyz
 
13.05.10
15:57
(21) Не обращайте внимания, когда передирал не убрал
24 Sj
 
13.05.10
15:57
User ID=bbb
поставь точку запятой после имени
25 sapphire
 
13.05.10
15:58
&НаСервере
Функция Удал()
   Con = "Provider=MSDAORA;Password=aaa;User ID=bbb Source=OSTART;Persist Security Info=True;";    
   Попытка
       StrConnection = СокрЛП(Con);
       Cn=Новый COMОбъект("ADODB.Connection");
       Cn.ConnectionString=Con;
       Сn.Open();
       Возврат "Все ОК";
   Исключение
       Возврат ОписаниеОшибки();
   КонецПопытки;  
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
   Сообщить(Удал());
КонецПроцедуры
26 Sj
 
13.05.10
15:58
наш ответ
User ID=bbb;
27 sapphire
 
13.05.10
15:59
(24) Прав, имхо :)))
28 ygrekxyz
 
13.05.10
16:00
(20) Все равно ругается, но по другому Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Provider cannot be found. It may not be properly installed.
29 sapphire
 
13.05.10
16:02
(28) см (24) и (26)
30 ygrekxyz
 
13.05.10
16:05
(29) скопировал кусок, поставил ";" , запустил
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): Oracle client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation.

Provider is unable to function until these components are installed.
31 Sj
 
13.05.10
16:06
(30) покажи текущую строчку с Con = ...
32 ygrekxyz
 
13.05.10
16:08
(31) Con = "Provider=MSDAORA;Password=msn123;User ID=msn;Source=OSTART;Persist Security Info=True;";
33 Sj
 
13.05.10
16:13
Source=OSTAR замени на Data Source=OSTART
34 ygrekxyz
 
13.05.10
16:18
(33) Действительно тупо скопировал (25). Поправил, сейчас
Con = "Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;";

Не помогло

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): Oracle client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation.

Provider is unable to function until these components are installed.
35 Sj
 
13.05.10
16:21
Ну тогда сделай внешнюю обработку и в ней просто попробуй строчки:

Cn=CreateObject("ADODB.Connection");
Cn.Open("Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;");

выдаст ошибку ?
36 ygrekxyz
 
13.05.10
16:25
(35) - Несовсем понял. синтаксис 7.7, под 7.7 пашет.
37 Sj
 
13.05.10
16:26
(36) сорри
Cn=Новый COMОбъект("ADODB.Connection");
Cn.Open("Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;");
38 Aprobator
 
13.05.10
16:28
(36) - блин, те же говорят - где стоит Серевер предприятия Клиента Оракла есть?
&НаСервере махни на &НаКлиенте.
39 ygrekxyz
 
13.05.10
16:28
(37) под 8.0 не ругается, сейчас попробую под 8.2 не в режиме управляемого приложения

Cn=Новый COMObject("ADODB.Connection");
   Cn.Open("Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;");
40 ygrekxyz
 
13.05.10
16:31
(37) под 8.2 не управл. приложением тоже пашет
41 Sj
 
13.05.10
16:34
(40) теперь добавь
&НаСервере
и попробуй
42 ygrekxyz
 
13.05.10
16:36
(38) в (6) писал что стоит. Может что-то не понимаю.

Есть машина, на ней стоит сервер 1С предприятия,
служба запущена с правами админа домена.
на ней же стоит оракловый 9-й клиент.

Есть другая машина, на которой стоит мс скл, вот на этой машине не стоит оракловый клиент.

Правильно?
43 Aprobator
 
13.05.10
16:38
(42) &НаКлиенте пробовал?
44 Sj
 
13.05.10
16:39
(42) По мне так сервер sql это сервер sql и ему до 1с глубоко фиолетово.
45 ygrekxyz
 
13.05.10
16:40
(41) не под упр приложением конструкция возвращает "ок"

&НаСервере
Функция ааа()
   Попытка
       Cn=Новый COMObject("ADODB.Connection");
       Cn.Open("Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;");
       Возврат("ОК");
   Исключение
       Возврат ОписаниеОшибки();    
   КонецПопытки;    
КонецФункции    

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Сообщить(ааа());
КонецПроцедуры
46 ygrekxyz
 
13.05.10
16:44
Если запускать подобную констуркцию в режиме управляемого приложения, то на машине с сервером приложений отрабатывает, на другой машине, где нет клиента ораклового не пашет.

Но это не сильно устраивает, всем клиентов ставить


&НаКлиенте
Функция Удал()
   Con = "Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;";    
   Попытка
       StrConnection = СокрЛП(Con);
       Cn=Новый COMОбъект("ADODB.Connection");
       Cn.ConnectionString=Con;
       Cn.Open();
       Возврат "Все ОК";
   Исключение
       Возврат ОписаниеОшибки();
   КонецПопытки;  
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
   Сообщить(Удал());
КонецПроцедуры
47 detec
 
13.05.10
16:45
Сервер 1С 8.2 - 64-битный?
48 Aprobator
 
13.05.10
16:46
(45) угу а под неуправляемым приложением директивы компиляции вообще учитываются?
хелп читал?
выдержка:
Каждая процедура и функция модуля формы, модуля команды и общего модуля УПРАВЛЯЕМОГО ПРИЛОЖЕНИЯ предваряется директивой компиляции, определяющей среду исполнения данной процедуры. Директива предваряется символом "&". Допустимые директивы:
49 detec
 
13.05.10
16:48
Con = "Provider=MSDAORA;Password=aaa;User ID=bbb Source=OSTART;Persist Security Info=True;";    
   Попытка
       StrConnection = СокрЛП(Con);
       Cn=Новый COMОбъект("ADODB.Connection");

Вот этот код можно переписать под Windows Powershell и попробовать подконнектится.
50 Sj
 
13.05.10
16:48
ну попробуй на клиенте это выполнить
&НаСервере
Функция ааа()
   Попытка
       Cn=Новый COMObject("ADODB.Connection");
       Cn.Open("Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;");
       Возврат("ОК");
   Исключение
       Возврат ОписаниеОшибки();    
   КонецПопытки;    
КонецФункции    

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Сообщить(ааа());
КонецПроцедуры
51 detec
 
13.05.10
16:49
И неплохо было бы войти с консоли или RDP под учёткой сервера 1С и в Windows Powershell выполнить код. Тогда сразу станет ясно.
52 ygrekxyz
 
13.05.10
16:49
(48) там читал, здесь не читал. Самоучка. Это как-то решает нашу проблему? :)
53 ygrekxyz
 
13.05.10
16:49
(47) нет
54 ygrekxyz
 
13.05.10
16:53
(49) начинается темный лес.
(51) в настоящий момент я сижу терминалкой на сервере, где стоит 1С Сервер Приложений с учеткой админа домена, от этой же учетки запущен сервер приложений.

Windows Powershell - это что такое, как его запустить и т.д. и т.п.
55 Sj
 
13.05.10
16:55
56 Sj
 
13.05.10
16:55
57 ygrekxyz
 
13.05.10
16:56
(50) попробовал:  Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): Oracle client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation.

Provider is unable to function until these components are installed.
58 Sj
 
13.05.10
16:56
(57) именно с &НаСервере ?
59 sapphire
 
13.05.10
17:01
(57) Посмотри от имени какой учетной записи запущен процесс rphost?
60 Aprobator
 
13.05.10
17:02
хм а клиент Оракла со скулем на одном компе живут? Такое ощущение, что клиент ищется именно на компе где база крутится.
61 ygrekxyz
 
13.05.10
17:03
(58) именно так.  (59) три процесса запущено от учетки админа домена
62 ygrekxyz
 
13.05.10
17:05
(60) формально на этой машине где стоит оракловый клиент, сервер приложения 1С есть и MS SQL 2005.
63 ygrekxyz
 
13.05.10
17:06
Спасибо всем, у нас уже поздновато. надеюсь завтра продолжим изыскание проблемы
64 Sj
 
13.05.10
17:07
Конечно. нет проблем. Удачи!
65 sapphire
 
13.05.10
17:13
(60) А что им должно мешать?
66 sapphire
 
13.05.10
17:16
(62) А если в MS SQL 2005 добавить linked server Oracle
и попытаться установить соединение через MS SQL server?
Понятно, что это не выход, но попробовать можно.
67 Sj
 
13.05.10
17:23
я бы на одном клиенте поставил бы клиента оракла и попробовал - если ошибка, то это ошибка на сервере
68 sapphire
 
13.05.10
17:25
(67) Знаешь, может тупо какая ниь софтина рубит соединение от 8.2?
Например, файервол
69 sapphire
 
13.05.10
17:26
т.е. 1cv77x.exe access permit, rphost - access denied?
70 Sj
 
13.05.10
17:37
(69) я тут только отвлеченно могу предполагать. По мне так соединение устанавливается не на сервере, поэтому бы было неплохо поставить клиента оракла для проверки.
71 ygrekxyz
 
14.05.10
07:20
(67) Поставил ораклового клиента на какую-то другую машину.
Если идет вызов функции &НаСервере  - дает ошибку,
&НаКлиенте  - дает "ОК"
72 detec
 
14.05.10
07:40
(57) Ещё вариант: сервер 1С:Предприятие тупо не видит ORACLE_HOME. Попробуйте добавить пользователю эту переменную.
73 ygrekxyz
 
14.05.10
07:41
(72) куда, как добавить?
74 detec
 
14.05.10
07:44
(73) Мой Компьютер, Свойства системы, Дополнительно, Переменные среды, Переменные среды пользователя для <доменная учётка>.
75 detec
 
14.05.10
07:47
(54) С RDP-сеанса получилось подконектиться к базе с помощью PL/SQL Developer, к примеру?
76 ygrekxyz
 
14.05.10
07:49
(75)с SQL PLus соединяется
77 detec
 
14.05.10
07:51
"Provider=OraOLEDB.Oracle.1;Password=""pass"";User ID=""user"";Data Source=or2.home";  - мы такой строкой коннектились к серверу Оракла.

or2.home - имя записи базы в tnsnames.ora

Oracle.1  - имя источника данных в ODBC

Windows Server 2003 R2. Oracle 10GR2.
78 ygrekxyz
 
14.05.10
07:54
(74) My Computer\ Properties \ Advanced \ Enviroment Variable \
Здесь 2 окошка.
1) user variables for  содержит 2 переменные Temp, TMP
2) system variables содержит path = C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\
79 detec
 
14.05.10
08:08
(78) SET ORACLE_HOME=C:\oracle\ora92  - в командной строке. И в системные переменные добавьте переменную ORACLE_HOME со значением C:\oracle\ora92.
80 ygrekxyz
 
14.05.10
08:17
Добавил, не помогло.
Ранее вы спрашивали 1С 64 разрядный или нет. Здесь какая засада может быть?
81 Sj
 
14.05.10
09:37
(80) а на сервере 1С:Предприятие это отрабатывается ?

&НаСервере
Функция ааа()
   Попытка
       Cn=Новый COMObject("ADODB.Connection");
       Cn.Open("Provider=MSDAORA;Password=msn123;User ID=msn;Data Source=OSTART;Persist Security Info=True;");
       Возврат("ОК");
   Исключение
       Возврат ОписаниеОшибки();    
   КонецПопытки;    
КонецФункции    

&НаКлиенте
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Сообщить(ааа());
КонецПроцедуры
82 ygrekxyz
 
14.05.10
10:19
(81) Решил начать мыслить концептуально.
Снес ораклового клиента был 9-й.

Поставил 10 клиент, под него строку коннекта другую.
Чудо произошло, заработало.

Что было - непонятно.
83 ygrekxyz
 
14.05.10
10:30
Спасибо всем за участие.
Хоть проблема и решилась неспортивно, главное решилась.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.