Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Index was outside the bounds of the array

254  1 2 все
Murr патриот03.10.17 12:04
Murr
03.10.17 12:04 

У меня - переход с Oracle.DataAccess.dll 10G x64 => Oracle.ManagetDataAccess.Dll 12.1 x64.

Место замены - вполне хорошо слеплено - менять надо в одной точке.

Замена сделана почти все работает.


Имеются 3 сервера (реально - 6, но ставятся парами, в паре - одинаковые версии Оракла).

И 6 баз данных.


Подключение описывается как :

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=db_host)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=L.world)));USER ID=*****; PASSWORD=*****;


Меняется только HOST.

Насколько Я понимаю, при таком подключении все детали уже прописаны и тнснамес.ора не используется.


Два из трех серверов используют Оракле 10Г х64 и отвечают на подключение без проблем.


На третьем сервере пользуется - Оракле 8.1 Ент. С него получаю Индех оут оф боунд.

Это не при считывании информации, а при попытке коннекта.


Та же строка с Oracle.DataAccess.dll 10G x64 вполне нормально работала.


Рытие тырнета дает ссылки только на проблемы считывания данных датареадером.


Как конфигурить коннектион 12-го клиента к 8.1-й базе?


Index was outside the bounds of the array.

#1 
AlexNek патриот03.10.17 13:51
AlexNek
NEW 03.10.17 13:51 
в ответ Murr 03.10.17 12:04
Как конфигурить коннектион 12-го клиента к 8.1-й базе?

Что то это мне напоминает вопрос как на "Kaby Lake" нормально работать с 7 виндой?


Хотя возможно, можно изменить строку подключения что бы ее понимал 8 оракле.

#2 
Murr патриот03.10.17 14:41
Murr
NEW 03.10.17 14:41 
в ответ Murr 03.10.17 12:04

Еще страннее.

Взял новый, 12.1 СклПлусс.ехе... маленько подшаманил - положил тнснамес.ора релативно туда где он ожидался... и законнектился...

#3 
  JosefSchwejk знакомое лицо03.10.17 15:30
NEW 03.10.17 15:30 
в ответ AlexNek 03.10.17 13:51

Вы действительно понимаете, о чем он говорит в принципе? улыб

#4 
AlexNek патриот03.10.17 15:58
AlexNek
NEW 03.10.17 15:58 
в ответ JosefSchwejk 03.10.17 15:30

не всегда, но у меня есть круглый стеклянный шарик, а при необходимости можно затащить Мурку в подвал дедушки Мюллера.спок

По крайней мере, в этом вопросе проблем не возникло.

#5 
Murr патриот03.10.17 18:12
Murr
NEW 03.10.17 18:12 
в ответ AlexNek 03.10.17 13:51

Хотя возможно, можно изменить строку подключения что бы ее понимал 8 оракле.

-----

Логи на 8-ке говорят, что она получила запрос и ответила положительно.

Подозреваю, что ошибка в обработке ответа 8-ки в Оракле.МанагетДатаАццесс.длл...


Я ее уже декомпильнул, но там довольно много просматривать...

Есть где ПДБ для нее? И, хорошо бы, дебажную версию с сорцами...

#6 
Murr патриот03.10.17 18:21
Murr
NEW 03.10.17 18:21 
в ответ JosefSchwejk 03.10.17 15:30

Разве настолько запутанно написал?


У меня - миграция.

Строки подключения - не менялись - используются те же что и при предыдущем клиенте.

Менятся клиентская часть, которая должна коннектится к разным серверам.

К двум (оба версии 10Г) - коннектится без проблем, к третьему (версия 8.1) - отваливается с указанной ошибкой.


Конкретная точка выпадения - вызов OracleConnection.Open().

Могу уточнить какая именно из внутренних функций выбрасывает исключение, но без знания деталей построения клиента (без сорцов) оно бессмысленно.


Так прояснилось? спок

#7 
  JosefSchwejk знакомое лицо03.10.17 21:16
NEW 03.10.17 21:16 
в ответ AlexNek 03.10.17 15:58

Завидую! улыб Мой интепретатор его речи в 90% случаев выпадает в астрал - человек же, видно, очень подкованный, но говорит на своем птичьем языке и зачастую сам с собой, сам себе задает вопрос и сам себе отвечает.

#8 
  JosefSchwejk знакомое лицо03.10.17 21:17
NEW 03.10.17 21:17 
в ответ Murr 03.10.17 18:21

Ниц нэ розуми, ниц безум

#9 
AlexNek патриот03.10.17 22:22
AlexNek
NEW 03.10.17 22:22 
в ответ JosefSchwejk 03.10.17 21:16

интерпретатор должнен быть адаптивным смущ. Мурку вроде давно знаю.

Проблемы весьма не простые, уровень изложения требует определенных знаний.

Как правило, немедленный ответ не ожидается. Требуется просто другой взгляд на вещи. Если проблема решена, описывается решение. Если нет, описываются попытки решения. Отсюда - как бы разговор с самим собой.

Вероятно нужен еще "резонанс", где то подобный тип мышления.

Если интересно, можно попробовать разобрать конкретный вопрос. Что же было непонятно.

Могу сразу сказать, что мой ответ был также многим непонятен, так как адресовался конкретно Мурке, который знает линейку процессоров Интел и связанные с этим проблемы Мелкософта.


#10 
  JosefSchwejk знакомое лицо03.10.17 22:54
NEW 03.10.17 22:54 
в ответ AlexNek 03.10.17 22:22
интерпретатор должнен быть адаптивным смущ. Мурку вроде давно знаю.

Употребляли вместе что-то? миг

#11 
AlexNek патриот03.10.17 23:12
AlexNek
NEW 03.10.17 23:12 
в ответ JosefSchwejk 03.10.17 22:54
Употребляли вместе что-то?

Да постоянно MSDN курим.спок

Хотя часто не прошибает...

#12 
Murr патриот03.10.17 23:44
Murr
NEW 03.10.17 23:44 
в ответ AlexNek 03.10.17 22:22

Требуется просто другой взгляд на вещи.

-----

Именно.

Просто пнуть чтобы помыслил с необычной стороны...

А иногда - попинывать... просто чтобы вопрос оставался в фокусе...


Если проблема решена, описывается решение. Если нет, описываются попытки решения. Отсюда - как бы разговор с самим собой.

-----

Да, вот по этому есть вопросик ко всем читающим - моя писанина в области решений или рассмотренных вариантов хоть для кого-то была полезна?

Для меня самого - была - приходилось возвращаться к некоторым моментам - хорошо что были описаны. Жаль - мало.

#13 
Murr патриот03.10.17 23:46
Murr
NEW 03.10.17 23:46 
в ответ JosefSchwejk 03.10.17 21:17

Ну тут Я бессилен... Как отпустит - спрашивай - если будет что - отвечу... смущ

#14 
Murr_0002 знакомое лицо06.10.17 11:44
Murr_0002
NEW 06.10.17 11:44 
в ответ Murr 03.10.17 23:46

Таки нашел в чем проблема.


Клиент Oracle.ManagetDataAccess.dll 12.1

поддерживает коннект к базам :

internal const string TokenOracle9iR2 = "9.2";

internal const string TokenOracle10gR1 = "10.1";

internal const string TokenOracle10gR2 = "10.2";

internal const string TokenOracle11gR1 = "11.1";

internal const string TokenOracle11gR2 = "11.2";

internal const string TokenOracle12cR1 = "12.1";

internal const string TokenOracle12cR2 = "12.2";


Мне же нужно - 8.1... Тупик...


Пошел искать 11-го клиента...

#15 
Murr_0002 знакомое лицо06.10.17 13:58
Murr_0002
NEW 06.10.17 13:58 
в ответ Murr_0002 06.10.17 11:44

Хммм...

11-й требует две дополнительные ДЛЛки и четко отвечает - версия не поддерживается.

Но так какого хрена Я без проблем коннекчусь к 8-ке-базе из 12-го СклПлусс?


Попутный вопросик - где и как поменять ответ Оракле 8.1 на запрос коннекта?

Когда-то давно читал что есть такой ливе-хак, но деталей не помню...


#16 
AlexNek патриот06.10.17 23:00
AlexNek
NEW 06.10.17 23:00 
в ответ Murr_0002 06.10.17 13:58
Но так какого хрена Я без проблем коннекчусь к 8-ке-базе из 12-го СклПлусс?

Еще не найденная ошибка бебе


Когда-то давно читал что есть такой ливе-хак

Не слышал, но можно просто подменить длл-ку на свою, которая вызывает функции из стандартной.

Когда то давно на плюсах подобное делал.

#17 
Murr_0002 знакомое лицо07.10.17 10:20
Murr_0002
NEW 07.10.17 10:20 
в ответ AlexNek 06.10.17 23:00

Еще не найденная ошибка

-----

Да-да, проблемы...


можно просто подменить длл-ку

-----

Можно откатится на клиента 10Г... как было до сих пор. Все работает.

Там правда несколько проблем.

Основная - вместо одной ДЛЛки-клиента надо иметь с 5-6 ДЛЛок и кучу дополнительных

моментов для их корректной работы.

Частичная проблема - отдельный клиент версии 10Г х64 - давно не доступен для загрузки.

Из доступного - есть ентерприсе база и ее надо ставить для возможности использования

клиента (сама база - не нужна).

12-й клиент - это одна ДЛЛка без подвязки к системе.



которая вызывает функции из стандартной.

-----

Мне нужно будет подменить функцию в стандартной.

#18 
AlexNek патриот07.10.17 15:58
AlexNek
NEW 07.10.17 15:58 
в ответ Murr_0002 07.10.17 10:20
Мне нужно будет подменить функцию в стандартной.

Ну а зачем еще свой враппер делать? То что не нужно пропускаем без изменений, то что надо меняем.

#19 
Murr_0002 знакомое лицо07.10.17 18:02
Murr_0002
NEW 07.10.17 18:02 
в ответ AlexNek 07.10.17 15:58

То что не нужно пропускаем без изменений, то что надо меняем.

-----

Там - много. Писать врапперы на все мне не хочется.

А подменить один вызов - не получится - там все замучано-закручено...

#20 
1 2 все