Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Вниз

одновременная запись в Paradox несколькими клиентами 


vic910   (2001-12-07 01:11) [0]

Проблема заключается в том что при работе по локалке
при записи одновременно несколькими пользователями новых
данных база накрывается приходится удалять несколько последних
записий database desktopom чтобы получить возможность доступа к
ней пожалуйста подскажите что нужно сделать чтобы избежать этой проблемы работает это чудо через BDE alias



123sss   (2001-12-07 02:42) [1]

Самый лучший способ - избавиться от "этого чуда". Paradox предназначен для локальных баз. Для сетевых версий - он плохое решение. А может быть и самое плохое решение.



Mick   (2001-12-07 08:54) [2]

Если Paradox положить на сетевой ресурс, расположенный на NT, то может работать вполне устойчиво.



sunwheel   (2001-12-07 09:19) [3]

Убедись, что в BDE Configuration>Drivers>Native>Paradox NET DIR указывает на твой каталог с базой. На всех машинах он должен быть один и тот же.



TonnyS   (2001-12-07 10:35) [4]

когда кто-то хочет записать базу, блокируй запись для всех остальных. Например в директории с базой создай файл, в который пиши номер пользователя, который сейчас пишет. Он записал - записываеш в файл 0, значит остальные могут писать. Конечно, использование Paradox для сетевой базы - очень неправильно, но иногда приходится.



Mick   (2001-12-07 10:43) [5]

А если я вставляю запись так:
Insert Into ....
то чем и какую запись блокировать?



TonnyS   (2001-12-07 11:11) [6]

хранить в файле на сервере номер записывающего на каждую из таблиц. А перед Insert into вставить процедуру проверки: можно ли писать? если нет - выдать сообщение - ждите. По таймеру проверять, когда наконец можно писать.



Radix   (2001-12-07 13:11) [7]

Что же проще всего использовать вместо Paradox для сетевой базы ???
Использовать InterBase или SQL мне пока не дано, а имеющиеся программы все работают с Paradox (локальные базы). Что делать если хочу переделать под сетку???



Lolik   (2001-12-07 13:26) [8]

Если база находится на компе, с которого идет работа с ней (т.е. невыделенный сервер) то на этом компе ОБЯЗАТЕЛЬНО должно стоять в BDE Configuration>Drivers>System>INIT>LOCAL SHARE = True. Если добавлять записи через TTable.Append то Paradox сам нормально блокирует записи создавая файлы с расширением lck.
А насчет того, что Paradox только для локальных баз - "Вы не любите кошек? Да Вы, батенька, их просто готовить не умеете!"



SP   (2001-12-07 13:41) [9]

Тоже столкнулся с такой проблемой в свое время, т.к. у БД "падали" индексы при одновременной записи с нескольких машин. Решил это использованием контрольного файла. Перед запись проверял есть ли указанный файл на сервере. Если да, то выдаю сообщение типа "Подождите...", если нет, то создавал файл (чтобы другие записи заблокировать), записывал данные в БД и удалял файл. Неудобно? Да, не спорю, но тогда, когда писалась программа, поджимали сроки и я понятия не имел что такое клиент-сервер. По крайней мере, программа работает до сих пор. Все довольны. :-)



Boo   (2001-12-07 13:54) [10]

Народ! Проще надо быть...
Как я уже говорил vic910 - IB и др. SQL сервера - енто крайний случай...
Хотя есть поправка к вопросу: енту прогу чеку (vic910) не переделать на использование контрольных записей (ну не его она, не его...).

Но есть вопрос: а не может помочь в данном случае эксклюзивное открытие (в TTable) на момент записи? т.е. если надо что-то записать, открываем эксклюзивно, если открылось то пишем, иначе ждем... после записи открываем обычным способом?



Boo   (2001-12-07 13:56) [11]

Уточнение: я Paradox очень плохо знаю (3 года юзаю MSSQL), так что сильно меня не материте...



roman001   (2001-12-07 19:10) [12]

Сейчас дописываю такую прогу. База на выделенном сервере под 2000wind
Серьезной работы еще не было но при тестировании индексы не падают да и переиндексировать можно. При чтени пользователем записи просто ставлю в опред. поле флаг блокировки этой записи. Проблема есть - нажатие кнопки редактирования разными пользователями на раз, два, три позволяет затирать изменения друг друга. А так ничего



Wizard_Ex   (2001-12-08 11:33) [13]

На чем база?



gepard   (2001-12-11 09:27) [14]

Живет Paradox как сетевая база! Нужно только культурно с ней работать, а не просто TTable на форму лепить. Для правильности и полноты картины нужно использовать еще и такие компоненты, как TSession и TBase - тогда и работать будет и исходники не стыдно соседу по парте показать будет :)



Mick   (2001-12-11 09:44) [15]

Да не все так радужно выглядит на самом деле. Не всегда приложения работают у Вас и соседа по парте. Иногда приложения у реальных клиентов начинают жить.



Filat   (2001-12-24 12:08) [16]

Я ещё в книге по 3-й Delphi читал про разграничение доступа к таблице. Имеется ввиду полный, чтение, просмотр и т.д. Если это использовать, то думаю проблемы не будет. Но я сам не писал еще сетевых приложений, поэтому как это организовать не скажу. Но нас много, кто-нибудь да подскажет:))



SergVlad   (2001-12-24 23:00) [17]

To Filat
Если таких как ты - то лучше не подсказывайте никому и ничего или не здесь, во всяком случае.
Paradox вполне сносно работает как сетевая СУБД.
Вы хоть понимаете, что "руку" к созданию BDE (IDAPI) приложили такие монстры как Novell, Borland, IBM ?
Только не здесь задавайте вопрос - "а хто энто ?".
Учите матчасть по книгам.
To TonnyS
Не изобретай накладку на BDE из своих функций - она и без тебя делает блокировки, а файл pdoxusrs.net для того и существует, чтобы фиксировать сетевых пользователей.
Если все же хотите уйти от Paradox, то лучше DBISAM ничего не предложу.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.03 c
14-90362          Дремучий              2001-12-03 23:44  2002.01.28  
Китайские сервера!


3-90228           Gelios                2001-12-24 06:50  2002.01.28  
Помогите плз!!


7-90401           l@z@                  2001-10-14 22:31  2002.01.28  
люди помогите! Форма, на ней поле ввода и лебел. Кнопка. нажимаем на кнопку


4-90427           WithoutHead           2001-11-27 19:09  2002.01.28  
Help!


3-90236           Андре                 2001-12-24 15:58  2002.01.28  
LookUp в одной таблицы значениями из другой