Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
ВнизКак заблокировать локальную всю БАЗУ данных Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c