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

Вниз

Резервная копия   Найти похожие ветки 

 
АндрейБ   (2003-03-12 22:46) [0]

Требуется периодически создавать резервную копию таблиц БД. Что можете посоветовать?


 
Pat   (2003-03-12 23:09) [1]


uses bde;

procedure BackUp(Table:TTable; Directory:PChar);
var
Path: PChar;
begin
Path:=StrNew(PChar(Directory));
Directory:=StrNew(PChar(Directory));
ForceDirectories(Path);
CharToOem(Path,Directory);
Directory:=PChar(Directory + Table.TableName);
StrDispose(Path);
Check(DbiCopyTable(Table.dbhandle, True,
pchar(Table.TableName), nil,
PChar(Directory)));
end;

Может быть что-нибудь и криво...


 
MsGuns   (2003-03-12 23:20) [2]

Я пользовался 2-мя способами:
1. Тупо запускается winrar в пакетном режиме и туда сливается все, кроме .lck. Восстанавливается аналогично "скопом".
Преимущества. Не надо старой БД. Простота кода. Скорость. Допустимость автоинкрементных связующих полей
Недостатки: база сливается вместе со всеми кривостями, БД в экслюзиве и нет ни одной таблы открытой

2. Создается temp-каталог, куда BatchMove`ом копируются (без связок и ключей) все таблы. Затем уже он (temp) архивируется winrar. Восстанавливается в старую БД (разворачивается в temp, затем оттуда BatchMove). Каждая таблица при этом предварительно чистится.

Преимущества. Не надо переводить БД в эксклюзив. Инфа копируется корректно. При восстановлении все поломанные индексы "поднимаются"
Недостатки. Недопустимость автоинкрементных полей в качестве связующих. Много кода. Медленно.


 
АндрейБ   (2003-03-13 02:44) [3]

>Pat © (12.03.03 23:09)

Не срабатывает Check(DbiCopyTable(Table.dbhandle, True, pchar(Table.TableName), nil, PChar(Directory)));
Пишет, что неправильный хэндл. Table.dbhandle = Null???

>MsGuns © (12.03.03 23:20)
В общем-то в обоих случаях ну компе надо иметь установленный winrar. А как программно воспользоваться winrar"ом?


 
MsGuns   (2003-03-13 10:31) [4]

Winrar (У меня версия занимает 167 Kb. Взял с одного сидюка 97-го года) должен быть в каталоге с прогой для этого кода

procedure TMainForm.btSaveLoadZipClick(Sender: TObject);
var
env: string;
si: STARTUPINFO;
pi: PROCESS_INFORMATION;

begin
if TButton(Sender).Caption="Загрузить" then
env := "Winrar.exe e -c- -cfg- -o+ "+MainForm.edZipCatalog.Text+"\"+
MainForm.edZipName.Text+".rar "+EcranDir;
else
env := "Winrar.exe a -c- -cfg- -o+ "+MainForm.edZipCatalog.Text+"\"+
MainForm.edZipName.Text+".rar "+EcranDir;
Screen.Cursor := crHourGlass;
if dmServ.dbEcran.Connected then dmServ.dbEcran.Connected := false;
ZeroMemory(@si,SizeOf(si));
si.cb := SizeOf(si);
// - Запуск WinRar из CommandLine
if not CreateProcess(nil,PChar(env),nil,nil,false,0,nil,nil,si,pi) then
ShowMessage("Ошибка открытия архива");
else
begin
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
MainForm.Update;
end;
Screen.Cursor := crDefault;
end;


 
Pat   (2003-03-13 11:21) [5]

>Пишет, что неправильный хэндл. Table.dbhandle = Null???
С чего бы это? Уже давно пользуюсь этой процедурой..
Вот пример вызова:

BackUp(DM.holidays,//Таблица
PChar(Trim(IncludeTrailingBackSlash(fmBackUp.edPath.text))+"Data\"));//Сохранит в директории <edPath.text>\Data\



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

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

Наверх




Память: 0.45 MB
Время: 0.007 c
1-100254
Zarba
2003-03-18 12:02
2003.03.31
DriveComboBox.drive & ini


7-100500
antoniz
2003-02-05 10:58
2003.03.31
Ошибка при попытке открытия запроса


8-100341
smok_er
2002-12-26 14:12
2003.03.31
Запись AVI с JPG


14-100416
Карелин Артем
2003-03-13 16:11
2003.03.31
Нужен справочник по сталям.


1-100303
distinger
2003-03-19 14:32
2003.03.31
Импорт класса из BPL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский