Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.10;
Скачать: CL | DM;

Вниз

Как заблокировать локальную всю БАЗУ данных   Найти похожие ветки 

 
Num Lock   (2003-02-14 08:45) [0]

Я делаю так:

Database.Exclusive:= True;
Database.Open;

, но другие пользователи и приложения всё равно могут открывать таблицы.


 
VAleksey ©   (2003-02-14 11:43) [1]

Назначь Exclusive = true всем DataSet - ам


 
Num Lock   (2003-02-14 15:08) [2]

У меня в программе есть процедура проверки таблиц на целостность индексов, и заголовков, и на время выполнения этой процедуры необходимо запрещать другим пользователям доступ к таблицам, поэтому Ваш способ не подойдет. Если в таблице есть повреждение, то Dataset даже не откроется. И это долго - переоткрывать все таблицы (несколько сотен мегабайт). И как в общем случае проверить, что кто то уже подключен к Базе?


 
roadrunner   (2003-02-14 15:59) [3]

если програ подключается через BDE,можно посмотреть через функцию
DbiOpenUserList.В helpe по BDE есть пример.Функция делает таблицу в памяти, где будет список пользователейт пользующихся данной БД(директорией где она хранится)


 
Num Lock   (2003-02-17 09:24) [4]

Спасибо!


 
Anatoly Podgoretsky ©   (2003-02-17 09:38) [5]

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


 
MsGuns ©   (2003-02-17 12:12) [6]

>Anatoly Podgoretsky © (17.02.03 09:38)
Это совет - шутка ?

Если после "финта ушами", т.е. переименования, прога не сможет завершиться нормально, то, похоже, чел останется вовсе без ушей (без БД) ;)))


 
Anatoly Podgoretsky ©   (2003-02-17 12:15) [7]

Ухи будем отрывать программисту за финт


 
Reindeer Moss Eater   (2003-02-17 12:23) [8]

Database1.Exclusive:=True;
//Открыть все таблицы БД.
for i:=0 to Pred(.....) do ....


 
MsGuns ©   (2003-02-17 12:28) [9]

>Reindeer Moss Eater (17.02.03 12:23)
>//Открыть все таблицы БД.

Ну и что, после этого другие не смогут получить доступ к таблицам ?
ИМХО, надо в цикле ВСЕ таблицы ДО открытия перевести в экслюзив в защищенном блоке. Если хоть одна попытка не удастся, все остальные разблокировать и дать соотв. сообщение, после чего вообще закрыть БД (убрать за собой все следы в .lck)


 
Reindeer Moss Eater   (2003-02-17 12:30) [10]

MsGuns ©
Имелось ввиду то, что для блокирование всей базы данных необходимо открыть монопольно все таблицы.
Вот и все.



 
Num Lock   (2003-02-19 16:08) [11]


> Anatoly Podgoretsky © (17.02.03 09:38)

- Я думаю что под "базой данных" в общем случае понимается совокупность таблиц входящих в неё.
- а финт с переименованием - это круто! Это именно то, что нужно.
1. Пытаюсь переименовать папку
2. Если получается, то делаю то, что мне нужно, и переименовываю обратно.
3. Если при открытии программы оригинальная папка не существует, а существует только временная, то переименовываю её взад, даже можно попробовать повторить выполнение операции



Страницы: 1 вся ветка

Текущий архив: 2003.03.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-29864
tv
2003-02-28 10:53
2003.03.10
PopupMenu in TRxRichEdit


1-29818
dv81
2003-02-28 04:51
2003.03.10
Как сопоставить размер RichEdit в зависимости от текста ?


7-30165
NorthMan
2003-01-12 19:09
2003.03.10
мне нужно запустить прогу от имени системы,


1-29879
policai
2003-02-25 23:21
2003.03.10
Свой ToolBar в Internet Explorer


1-29839
Someone
2003-02-28 10:51
2003.03.10
Маленький вопрос по OLE