Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
АндрейБ   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.011 c
1-100268
EagleOwl
2003-03-16 22:09
2003.03.31
Как запустить какую-нибудь программу из своей?


7-100493
Senator
2003-02-07 12:28
2003.03.31
Звук


3-100169
Roki
2003-03-12 15:26
2003.03.31
Как в IB(FireBird) привести типы данных?


3-100177
АндрейБ
2003-03-12 22:46
2003.03.31
Резервная копия


14-100461
Maximator Vetera
2003-03-14 15:32
2003.03.31
Переход между листами в Excel 97 с помощью горячей клавиши





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