Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Операции с таблицами БД [D7]


Татьяна ©   (2008-09-03 07:31:00) 

Подскажите пожалуйста, каким образом можно закрыть файл таблицы БД чтобы можно было запустить архивацию файла. Методы CLOSE и ACTIVE компонента Table не срабатывают.


MsGuns   (2008-09-03 15:53:00) [1]

Если это парадокс, то, насколько мне известно, существуют только один способ надежно заблокировать архивируемые таблицы от постороннего доступа - это полный их захват. После этого - для каждой Select * from с переименованием Answer в "родное" имя в другом каталоге. После отработки всех запросов содержимое "другого" катагога архивируется. все таблицы разблокируются.


Anatoly Podgoretsky   (2008-09-03 12:01:00) [2]

> quart  (03.09.2008 11:48:16)  [16]

LOCAL SHARE
Если оно настроено, то никаких команд сохранения буферов давать не надо.
В справке смотреть бессмысленно, там этого нет, поскольку это побочный эффект, иначе чем задумывалось, кстати вся часть справки по LOCAL SHARE - сплошная мифология от Борланд, подлежит выкидыванию и переосмысливанию, даже TI грешит неточностями, хотя корректировалось.


quart   (2008-09-03 11:48:00) [3]


> Anatoly Podgoretsky ©   (03.09.08 11:43) [15]

А что в настройках неправильно?


Anatoly Podgoretsky   (2008-09-03 11:43:00) [4]

> quart  (03.09.2008 10:52:12)  [12]

Это как раз наглядный пример неправильной настройки БДЕ


oldman   (2008-09-03 10:59:00) [5]


> Татьяна ©   (03.09.08 10:46) [11]
> Всем спасибо за помощь. Я все поняла


Такие ветки так просто не закрываются...
Мы еще продолжим, будь уверена! Заходи, если что.


brother   (2008-09-03 10:58:00) [6]

> Всем спасибо за помощь. Я все поняла

эх, если бы это было так....


quart   (2008-09-03 10:52:00) [7]

close;
flushbuffers?


Татьяна   (2008-09-03 10:46:00) [8]

Всем спасибо за помощь. Я все поняла


brother   (2008-09-03 10:23:00) [9]

работающую базу не архивируют! только ее копию) +1 к [6]


oldman   (2008-09-03 10:22:00) [10]


> Anatoly Podgoretsky ©   (03.09.08 09:49) [6]
> и все равно, копировать в другую папку, и только потом ее
> архивировать.


Поддерживаю безоговорочно


Anatoly Podgoretsky   (2008-09-03 10:20:00) [11]

> Сергей М.  (03.09.2008 10:05:07)  [7]

Для БДЕ не обязательно, некоторые блокировки снимаются только после закрытия приложения, особенно если оно не настроено и приложение написано без учета этого.


Сергей М.   (2008-09-03 10:05:00) [12]


> Методы CLOSE и ACTIVE компонента Table не срабатывают


Установи св-ва Session.Active и Database.Connected в False  и би хэппи)


Anatoly Podgoretsky   (2008-09-03 09:49:00) [13]

Мне кажется, что ты хочешь архивировать всю базу?
Стоит подумать о других способах, например в проводнике или написание второго приложения, которое гарантирует правильность и все равно, копировать в другую папку, и только потом ее архивировать.


Anatoly Podgoretsky   (2008-09-03 09:46:00) [14]

> Татьяна  (03.09.2008 9:27:04)  [4]

Не просто копии, с помощью процедур ОС, а копии с помощью движка, для БДЕ это dbiCopyTable - копирует все семейство, требует блокировки на чтение. Подробности в справке по БДЕ, там же пример.


Татьяна   (2008-09-03 09:27:00) [15]

То есть, если я хочу заархивировать таблицы при работающем приложении, то надо сделать копии таблиц и их заархивировать?


Anatoly Podgoretsky   (2008-09-03 09:12:00) [16]

Вообще то файлы БД не блокируются, может ты не только файлы БД хочешь заархивировать, то для БДЕ это полное закрытие приложения, но именно так и надо делать, поскольку попытка архивации открытой базы очень чревато, данные могут быть в памяти и не сброшены на диск, кроме того ситуация еще хуже, часть данных может быть сброшена, например данные, а индекс или мемо еще нет. Попытка восстановления из подобного архива может плачевно кончиться.
Архивировать на ходу можно, если СУБД понимает теневые копии или в приложение сделан их аналог.


Татьяна   (2008-09-03 08:56:00) [17]

Да, архивировать хочу WinRARом. А причину пишет, что файл занят другим приложением.


evvcom   (2008-09-03 08:26:00) [18]

а что такое "запуск архивации файла"?
Напрягаю телепатор после отпуска. Это архивирование WinRar-ом, WinZip-ом или им подобными? Ну так они что-нибудь пишут о причинах?

> Методы CLOSE и ACTIVE компонента Table не срабатывают.

Active - не метод, а свойство. Close - да, метод. Но он срабатывает. То, что ему положено делать, он делает. Почему же не срабатывает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо