|
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
|
Спасибо всем за участие.
Хоть проблема и решилась неспортивно, главное решилась. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |