Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
3-29776
VIB
2003-02-20 10:41
2003.03.10
DBGrid


14-30081
vic_774N
2003-02-20 11:30
2003.03.10
Дополнение к теме - ... имея нелицензионную Delphi


3-29711
lark
2003-02-18 06:00
2003.03.10
MS SQL Server 2000+ADO+Delphi6


1-29905
Provodnick
2003-02-26 14:00
2003.03.10
Как работать с Memory Mapped Files?


14-30024
Makhanev A.S.
2003-02-24 00:54
2003.03.10
Стиль программирования...




   Наверх