PDA

View Full Version : نحوه Backup گیری از Dbase های Dbisam



پریسا نامدار
شنبه 02 آبان 1383, 18:14 عصر
سلام دوستای عزیز.
میدونم که سوالم یک سوال کاملا تکراری هستش.
اما حقیقتا من نتونستم چیزی رو که میخوا تو Froum پیدا کنم.
من به تازگی یه برنامه واسه یه شرکتی نوشتم و دیتابیس های این شرکت کاملا مهم هستش.
حالا میخوام اگه میشه یک راهنمایی کامل به من بکنید که چطور میشه از Database هام یک Backup با درخواست User بگیرم.
و این Backup در ضمن میخوام در جایه دیگه از هارد طرف گرفته بشه (درایو دیگری) .
ممنون میشم اگه منو راهنمایی کنید.(من به هیچ کدوم از پارامترهای کپی کردن فایل و غیره کار نکردم).
:flower: :flower: :flower: :flower: :flower:

jirjirakk
شنبه 02 آبان 1383, 19:52 عصر
یکی از راه ها استفاده زا متد بک آپ خود DBISAM هستش که میاد همون جایی که دیتابیس های هستش بک آپ رو با پسوند هایی که توی راهنمای کامپوننت هست میتونی پیدا کنی


روش دیگش هم که توی برنامه های کلاینت میتونی استفاده کنی دریافت یک نام و مسیر از کاربر است و پس از فشرده کردن (یا خود فایل ها بانک رو DAT و IDX) رو کپی کنی تو اون مسیر ...

امیر-نا
شنبه 02 آبان 1383, 20:22 عصر
میشه بیشتر توضیح بدین

یکی از راه ها استفاده زا متد بک آپ خود DBISAM هستش که میاد همون جایی که دیتابیس های هستش بک آپ رو با پسوند هایی که توی راهنمای کامپوننت هست میتونی پیدا کنی

پریسا نامدار
یک شنبه 03 آبان 1383, 01:09 صبح
آره اگه لطف کنید توضیحی در این مورد بدید و یا اگه محبت کنید یه برنامه نمونه بذارید خیلی خیلی ممنون میشم.
آخه این موضوع خیلی برام مهمه.!
ممنون میشم از جوابتون.

مهدی کرامتی
یک شنبه 03 آبان 1383, 01:21 صبح
توضیحات کامل استفاده از امکان Backup در راهنمای DBISAM وجود دارد.

azhdari
یک شنبه 03 آبان 1383, 01:59 صبح
پریسا نامدار
میتوانید به این لینک رجوع کنید :

http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20990284.html

azhdari
یک شنبه 03 آبان 1383, 02:10 صبح
البته این برای اسکوءل سرور هست ولی با تغییرات بسیار جزیی قابل استفاده توی هر engine هست.

پریسا نامدار
یک شنبه 03 آبان 1383, 16:52 عصر
ممنون میشم اگه منو راهنمایی کنید.(من به هیچ کدوم از پارامترهای کپی کردن فایل و غیره کار نکردم). .
میشه به صورت عملی کسی اینکارو بهم توضیح بده؟؟.
حقیقتا من تا بحال از هیچ Database ی Backup نگرفتم و به همین خاطر با مشکل اطلاعات و نحوه Backup گیری مواجه هستم.
حتی اگر یک نمونه از Backup هایی که تا بحال تو برنامه هاتون از Database گرفتید بذارید عالیه.
ممنون از همه. :flower: :flower: :flower:

MiRHaDi
یک شنبه 03 آبان 1383, 18:42 عصر
سلام
با این کار کم که راحتتر باشی
یک Query بذار
توش بنویس

insert into "X:\backup.db" select * from tablename
اسماشو عوض کن ببین کارت راه میفته ؟‌
اگه نشد خبر بده برات یک راه دیگه بگم
بای

پریسا نامدار
دوشنبه 04 آبان 1383, 02:35 صبح
من اینکارو هم کردم نشد.!!!!
:( :(

مهدی کرامتی
دوشنبه 04 آبان 1383, 03:52 صبح
کامپوننت TDBISAMDatabase متدی بنام Backup دارد، توضیحات آنرا در راهنمای DBISAM ببینید. کار کردن با آن نیز بسیار ساده است.

jirjirakk
دوشنبه 04 آبان 1383, 09:39 صبح
1- اطلاعاتی که توی خود راهنمای DBISAM دیده میشه :

<span dir=ltr>The TDBISAMDatabase component has new backup and restore facilities available in the following methods
and events:
Backup
BackupInfo
Restore
OnBackupProgress
OnBackupLog
OnRestoreProgress
OnRestoreLog
Please see the Backing Up and Restoring Databases topic for more information</span>.

کامل توی Backing Up and Restoring Databases این قسمت توضیح داده

پریسا نامدار
دوشنبه 04 آبان 1383, 10:16 صبح
خیلی ممنون از جوابتون.
میرم ببینم میتونم از این امکان Dbisam استفاده کنم.
بازم ممنون.

azhdari
دوشنبه 04 آبان 1383, 13:27 عصر
پریسا نامدار
به این لینک که برای شما فرستادم سر زدید ؟



http&#58;//www.experts-exchange.com/Databases/Microsoft_SQL_Server/Q_20915340.html

پریسا نامدار
دوشنبه 04 آبان 1383, 21:37 عصر
بله سر زدم و جوابهایی رو که به سوال داده بودن خوندمو
اما هیچ کدوم به دردم نخوردن !!!!!.
کسی هست که بیاد نحوه Backup گیری و روشهای اونو به صورت عملی توضیح بده.
اگر مقاله یا بحثی در این مورد هم باشه کافیه. :( :(
ممنون.
:flower: :flower:

Mohammad S
سه شنبه 05 آبان 1383, 22:18 عصر
این هم یک تکه برنامه که کار کرده :mrgreen:
اگه مشکلی بود بفرمایید تا توضیح دهم:


var
TablesToBackup&#58; TStrings;
File_Name&#58;String;
--
--
--
--

File_Name&#58;=BackUp_Form.Path+BackUp_Form.FileName+' .bkp';
if FileExists&#40;File_Name&#41; then
begin
if MessageDlg_Farsi&#40;'&Yacute;&Ccedil;&iacute;&aacute; &Ocirc;&Ecirc;&iacute;&Egrave;&Ccedil;&auml;&iacute; &Egrave;&Ccedil; &auml;&Ccedil;&atilde; &Ccedil;&auml;&Ecirc;&Icirc;&Ccedil;&Egrave;&iacute; &Ocirc;&atilde;&Ccedil; &aelig;&Igrave;&aelig;&Iuml; &Iuml;&Ccedil;&Ntilde;&Iuml;. &Acirc;&iacute;&Ccedil; &atilde;&Ccedil;&iacute;&aacute; &Egrave;&aring; '+#13+#10+'&Ntilde;&aelig;&auml;&aelig;&iacute;&Oacute;&iacute; &Ccedil;&iacute;&auml; &Yacute;&Ccedil;&iacute;&aacute; &atilde;&iacute; &Egrave;&Ccedil;&Ocirc;&iacute;&Iuml;&iquest;', mtWarning, &#91;mbYes,mbNo&#93;, 0,True&#41; = mrYes then
begin
TablesToBackup&#58;=TStringList.Create;
try
DM.DBISAMAccount.Close;
DM.DBISAMCreated_Files.Close;
DM.DBISAMHoghogh.Close;
DM.DBISAMKarmandan.Close;
DM.DBISAMSazman.Close;
DM.DBISAMShobe.Close;

with DM.DBISAMDatabase1 do
begin
Close;
Open;

with TablesToBackup do
begin
Add&#40;'Account'&#41;;
Add&#40;'Created_Files'&#41;;
Add&#40;'Hoghogh'&#41;;
Add&#40;'Karmandan'&#41;;
Add&#40;'Sazman'&#41;;
Add&#40;'Shobe'&#41;;
end;

if Backup&#40;File_Name,
'Backup in '+ShDateToStr&#40;Date&#41;,6,TablesToBackup&#41; then
ShowMessage_Farsi&#40;'&Ccedil;&iacute;&Igrave;&Ccedil;&Iuml; &Yacute;&Ccedil;&iacute;&aacute; &Ocirc;&Ecirc;&iacute;&Egrave;&Ccedil;&auml; &Egrave;&Ccedil; &atilde;&aelig;&Yacute;&THORN;&iacute;&Ecirc; &Ccedil;&auml;&Igrave;&Ccedil;&atilde; &Ocirc;&Iuml;.',True&#41;
else
ShowMessage_Farsi&#40;'&Icirc;&Oslash;&Ccedil; &Iuml;&Ntilde; &Ccedil;&iacute;&Igrave;&Ccedil;&Iuml; &Yacute;&Ccedil;&iacute;&aacute; &Ocirc;&Ecirc;&iacute;&Egrave;&Ccedil;&auml;!',True&#41;;
end;
finally
TablesToBackup.Free;
DM.DBISAMAccount.Open;
DM.DBISAMCreated_Files.Open;
DM.DBISAMHoghogh.Open;
DM.DBISAMKarmandan.Open;
DM.DBISAMSazman.Open;
DM.DBISAMShobe.Open;
end;
end;
اگر Begin و End ها کم و زیاد هستند به بزرگواری خودتان ببخشید. چون چک نکردم. با نگاهی به این تکه کد، که از بخشی از پروژه خودم کپی کرده ام به روال کار آشنا خواهید شد.
FileName و Path نام دو Edit هستند.

برای بازیابی هم:


TablesToRestore&#58;=TStringList.Create;
try
DM.DBISAMAccount.Close;
DM.DBISAMCreated_Files.Close;
DM.DBISAMHoghogh.Close;
DM.DBISAMKarmandan.Close;
DM.DBISAMSazman.Close;
DM.DBISAMShobe.Close;

with DM.DBISAMDatabase1 do
begin
Close;
Open;
with TablesToRestore do
begin
Add&#40;'Account'&#41;;
Add&#40;'Created_Files'&#41;;
Add&#40;'Hoghogh'&#41;;
Add&#40;'Karmandan'&#41;;
Add&#40;'Sazman'&#41;;
Add&#40;'Shobe'&#41;;
end;

if Restore&#40;File_Name,TablesToRestore&#41; then
ShowMessage_Farsi&#40;'&Egrave;&Ccedil;&Ograve;&iacute;&Ccedil;&Egrave;&iacute; &Ccedil;&Oslash;&aacute;&Ccedil;&Uacute;&Ccedil;&Ecirc; &Egrave;&Ccedil; &atilde;&aelig;&Yacute;&THORN;&iacute;&Ecirc; &Ccedil;&auml;&Igrave;&Ccedil;&atilde; &Ocirc;&Iuml;.',True&#41;
else
ShowMessage_Farsi&#40;'&Icirc;&Oslash;&Ccedil; &Iuml;&Ntilde; &Egrave;&Ccedil;&Ograve;&iacute;&Ccedil;&Egrave;&iacute; &Ccedil;&Oslash;&aacute;&Ccedil;&Uacute;&Ccedil;&Ecirc;!',True&#41;;
end;
finally
TablesToRestore.Free;
DM.DBISAMAccount.Open;
DM.DBISAMCreated_Files.Open;
DM.DBISAMHoghogh.Open;
DM.DBISAMKarmandan.Open;
DM.DBISAMSazman.Open;
DM.DBISAMShobe.Open;
end;


موفق باشید ::نوشتن::

MiRHaDi
چهارشنبه 06 آبان 1383, 01:57 صبح
سلام
عجب ! خوب اینکارو بکن :
دو تا فایل که مال دیتا بیست هست رو به اون آدرس که میخوای کپی کن با برنامه ! همین
این از همش راحتتره
اگه نخوای ! میشه از دو تا table استفاده کنی و اولی رو first کنی و تا وقتی eof نشده یکی یکی رکورد ها رو append reccord کنی تو دومی !
اینم یک راه هست ولی زیاد اصولی نیست !
اگه بازم نشد خبر کن
بای

MiRHaDi
چهارشنبه 06 آبان 1383, 02:05 صبح
سلام
من وقتی اینو مینوشتم این جوابا بالاش نبود :o
وقتی نوشتم یهو دیدم 10 نفر جواب دادند
عوارض نصف شبه ؟
بای

پریسا نامدار
چهارشنبه 06 آبان 1383, 16:19 عصر
سلام دوستای عزیز.
خیلی ممنون که جواب هایی که به من دادین.
جوابی آقا محمد دادن رو من تو دو قسمتش موندم.
اولی اینکه دو EditBox نوشته شده :

BackUp_Form.Path+BackUp_Form.FileName
چه اطلاعاتی رو تو خودشون دارن که اونو داخل متغیر FILE_NAME قرار میدین و درضمن اگه EDIT هستش چرا کد
.text رو ادامش نزدین؟.
دوم اینکه قسمت :

if Backup&#40;File_Name,
'Backup in '+ShDateToStr&#40;Date&#41;,6,TablesToBackup&#41; then
ShowMessage_Farsi...
که فکر کنم قسمت اصلی Backup گیری باشه کار نمی کنه و به قسمت if backup خطا میده!!!!.
البته قسمت Shdatetostr هم شما از یک کامپوننت استفاده کردین.
اگه لطف این قسمت ها رو توضیح بدید ممنون میشم.
------------
از جواب آقای میرهادی خیلی ممنونم و میخواستم بدونم (تو همین قسمت من گفته بودم با نحوه کپی گرفتن و Paste کردن و در کل با نحوه کار کردن با فایلها اصلا آشنایی ندارم) چطوری میتونم از دیبتابیس کپی گرفت و یه جا Paste کرد.
در مورد Append Record هم به نظر خودتون وقتی دیتابیس رکوردهاش زیاد بشه خیلی کار وفت گیری نمیشه.
(برنامه من مربوط به بخش گارنتی و فروش شرکتی هستش که در هر بار زدن دکمه جدید چیزی حدود 50 کالا "رکورد"رو وارد دیتابیس میکنن).
بازم از جواب همه دوستان ممنون.
:flower: :flower: :flower: :flower:

Mohammad S
پنج شنبه 07 آبان 1383, 01:00 صبح
در کل مسیر ذخیره سازی فایل بک آپ را در خود نگه می دارند که یکی مسیر فایل و دیگری نام فایل است. برای دریافت مسیر می توان از هر روشی استفاده کرد (OpenDialog یا DirectoryListBox) و نام فایل هم که دستی وارد می شود.
ShowMessage_Farsi فارسی شده همان ShowMessage خودمان هست که من آن را دستکاری کرده ام. شما آن را عوض کنید و در انتهای آن True را حذف کنید.
shDatetoStr هم کامپوننت تاریخ شمسی آقای فراهانی است که از سایت www.farsicomponents.com قابل خریداری است که شما به جای آن لازم نیست چیزی قرار دهید چون در واقع توضیحات آن فایل بک آپ است.

موفق باشید.

:)

پریسا نامدار
پنج شنبه 07 آبان 1383, 01:35 صبح
همه رو گفتین الا قسمت اصلی که من نفهمیدم.

if Backup
میشه لطف کنید و راهنمایی کنید که این Backup این وسط چیه و چیکار میکنه. :flower: :flower:

Mahdi_S_T
پنج شنبه 07 آبان 1383, 22:55 عصر
خانم پریسا . اگه دوست داری سریعتر به جواب برسی سری به سایت زیر بزن در آنجا یه برنامه با سورس به زبان دلفی است که می تونی هم یاد بگیری و هم از آن استفاده کنی که خیلی راحت است و من در نرم افزارهام جهت پشتیبان گیری از آن استفاده می کنم .
موفق باشی .
www.Javan-Soft.com

Mohammad S
جمعه 08 آبان 1383, 11:01 صبح
دستور BackUp همون دستور اصلی پشتیبان گیریه دیگه :( که در اصل اینجوری باید می نوشتم:

DM.DBISAMDatabase1.Backup&#40;...
ولی اگر توجه کرده باشید قبلش نوشته شده:

with DM.DBISAMDatabase1 do
یعنی اگر بنویسید
Backup&#40;File_Name,
کافیه و دستور if قبل از آن هم اینه که اگر نتوانست به هر دلیلی پشتیبان گیری را انجام دهد، پیغام مناسب را نشان دهد.
امیدوارم که زودتر کارتان را شروع کنید. ضمنا همانطور که آقای کرامتی هم فرمودند شما حتما راهنمای خود DBISAM را حتما مطالعه بفرمایید.
8)
موفق باشید

پریسا نامدار
یک شنبه 10 آبان 1383, 11:56 صبح
خیلی ممنون که جواب دادید.
البته من کارت اینترنتن تموم شده بود و نتونستم جوابتونو ببینیم.
میرم ببینم میتونم Backup بگیرم .
بازم ممنون از جوابتون.

Mohammad S
یک شنبه 10 آبان 1383, 21:30 عصر
خواهش می کنم
موفق باشید :)

fahimi
پنج شنبه 16 تیر 1390, 21:24 عصر
من از کامپوننت فشرده ساز مانند ziptv , vclzip استفاده میکنم بدلیل اینکه دیتابیس dbisam یک پوشه است آن zip و در فولدر مورد نظر ذخیره میکنم و در صورت ضرورت آن را unzip میکنم




pathbak:=edit1.Text+'\*.*';
VCLZip1.Recurse := True;
VCLZip1.SkipIfArchiveBitNotSet := False;
VCLZip1.ResetArchiveBitOnZip := False;
VCLZip1.StorePaths := True;
VCLZip1.FilesList.Add(pathbak);
VCLZip1.TempPath := edit3.Text;
VCLZip1.ZipName := edit3.Text;
VCLZip1.Zip;

fahimi
چهارشنبه 22 تیر 1390, 20:00 عصر
var
TablesToBackup: TStrings;
begin
TablesToBackup:=TStringList.Create;
try
with DBISAMDatabase1 do
begin
//DatabaseName:='MyDatabase';
//Directory:='d:\temp';
with TablesToBackup do
begin
Add('table1');
Add('table2');
Add('table3');
Add('table4');
Add('table5');
Add('table6');
end;
if Backup('d:\1\'+
StringReplace(DateToStr(Date),
'/','',[rfReplaceAll])+'.bkp',
'Daily Backup for '+DateToStr(Date),6,
TablesToBackup) then
ShowMessage('Backup was successful')
else
ShowMessage('Backup failed');
end;
finally
TablesToBackup.Free;
end;
end;

fahimi
چهارشنبه 22 تیر 1390, 20:04 عصر
var
TablesToRestore: TStrings;
begin
TablesToRestore:=TStringList.Create;
try
with DBISAMDatabase1 do
begin
//DatabaseName:='MyDatabase';
//Directory:='d:\temp';
with TablesToRestore do
begin
Add('table1');

Add('table2');

Add('table3');

Add('table4');

Add('table5');

Add('table6');

end;
if Restore('d:\1\'+
StringReplace(DateToStr(Date),
'/','',[rfReplaceAll])+'.bkp',
TablesToRestore) then
ShowMessage('Restore was successful')
else
ShowMessage('Restore failed');
end;
finally
TablesToRestore.Free;
end;
end;

fahimi
جمعه 21 مرداد 1390, 14:28 عصر
در مورد پشتیبان گیری در شبکه تنها نکته آن این است که مسیری ذخیره سازی باید در سرور باشد در صورتی در کلاینت باشد پشتیبانگیری آنجام نمی شود