Виста, и одновременный доступ к базам...

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Виста, и одновременный доступ к базам...

Сообщение iGrok » 24.01.2008 (Чт) 17:55

Есть база. Аксесс. Подключение - Jet.OLEDB.4.0

Подключаются к ней три софтины. Под XP проблем ноль. Ну подумали-подумали, подключились, и работают.

Теперь ставим все то же на Висту, и получаем гадость. Если запустить сначала одну, потом вторую, и после полной загрузки третью - все ок.

Если две пытаются запуститься одновременно - вылетают обе. Судя по всему именно в момент коннекта к базе.

Пока толком покопаться не получилось - поэтому ищу варианты не имея возможности их проверить.

Кто-нибудь сталкивался с таким?

Буду признателен за любые подсказки.
label:
cli
jmp label

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 29.01.2008 (Вт) 14:07

Ну что, не решил проблему? Может в висте драйвера ODBC другие? (тут 4.0 и там 4.0, но тут 4.0.1567 а там 4.0.1283)
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 30.01.2008 (Ср) 0:19

Пока нет ((

На неделю дорвусь до Висты еще раз и буду решать конкретно.
У меня и есть пока предположение только на ODBC / ADO..
label:
cli
jmp label

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 04.02.2008 (Пн) 10:58

Угу. Решил, блин.. Выяснил почему, но решения не вижу.

Проблема в одновременном доступе к файлу под вистой.
Одна из софтин открывает много-много коннектов к одной БД(т.е. к одному файлу). Под XP все гуд. А вот под вистой - Access Violation..
Хотя и там и там режим открытия Share Deny None

Возникает вопрос: кто знает как еще принудительно открывать БД только для чтения?

Виста любой файл похоже в эксклюзивном режиме открывает.. (

Точнее, блокировка идет на несколько секунд.. И если в это время открыть второе соединение - все, капец.

В общем, похоже придется переписывать всю софтину - либо обходиться одним соединением (правильный вариант =), либо вставлять задержки на эти самые несколько секунд... (
label:
cli
jmp label

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 04.02.2008 (Пн) 18:48

Еще антереснее стало. )

Можно открыть 5-10-15 и.т.п. коннектов к одной базе подряд. НО если закрыть хотя бы один, следующий не открывается, пока базу не отпустят все. Т.е. пока есть хотя бы один открытый.

Т.е. конструкция
Conn1.Open:Conn.Open:Conn1.Close:Conn.Close
Работает в цикле до бесконечности (проверил до 50 раз =)

А вот конструкция
Conn1.Open:Conn.Open:Conn.Close:Conn.Open
Не работает.

Под XP все без проблем.
label:
cli
jmp label

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 05.02.2008 (Вт) 11:10

Все.
Я тормоз.

Просто Виста, как оказалось, куда как "правильнее" работает..

Одна из софтин открывала туеву.. Э.. В общем очень много соединений.
Причем большинство - как надо: Mode = adModeRead
А несколько - adShareDenyNone.

Вот и вся беда.. Отловить из было трудно.. Там логическая ошибка в коде была.. А листинг - почти на 5мб..
label:
cli
jmp label

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 05.02.2008 (Вт) 18:33

У меня уже крыша едет с этой Вистой.

Локальная база. Открываем соединение с mode = adModeReadWrite or adModeShareDenyWrite

Пока оно открыто можно открыть и закрыть сколько угодно соединений с mode = adModeRead

В процессе все спокойно пишется через первое и читается через все остальные.

Сетевая база. Открываем соединение с mode = adModeReadWrite or adModeShareDenyWrite

Пока оно открыто, открываем еще сколько угодно с mode = adModeRead

Закрываем хотя бы одно из них... И все. Больше соединений не открыть, пока не закроются все.

На локальной БД все ок. На сетевой - такая вот мазафака.

Хоть кто-нибудь в курсе, что это за фигня?
label:
cli
jmp label

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 05.02.2008 (Вт) 19:44

Все. Можно прикрывать. Проблема оказалась в сетке - новелл под висту не давал шарный доступ к файлам, до тех пор, пока ему не сказали это сделать принудительно.

Забавно, что под XP таких проблем не возникало.. Хотя там тоже новелловская сеть.
label:
cli
jmp label

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 19.02.2008 (Вт) 16:17

В общем, ничего так и не решилось. (((
Не понятно, то ли это Виста так плохо работает с сетью, то ли это Новелл-клиент так крив под вистой..

Если кто вдруг столкнется:

Пришлось идти обходным путем - не держать соединения. Открывать, когда требуется, и сразу закрывать. В этом случае все работает достаточно быстро, и при этом стабильно.
label:
cli
jmp label


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 259

    TopList