Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-29838
V-Isa
2003-02-28 11:45
2003.03.10
Определение компонента, над которым расположен курсор мыши


3-29699
Жук
2003-02-18 11:42
2003.03.10
Внешнее объединение и вложенный select


1-29925
@D
2003-02-27 10:04
2003.03.10
Консоль


1-29812
Duke2
2003-02-27 07:58
2003.03.10
Кодировка графсимволов ДОС


6-30003
Blacki
2003-01-20 16:06
2003.03.10
Вопрос по TServerSocket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский