PDA

View Full Version : Backup,Restore در Firebird Embedded



کامروا
پنج شنبه 12 مرداد 1391, 15:11 عصر
سلام

از دلفی XE2 و FB 2.5.1 Embedded استفاده میکنم.
چطور میتونم از دیتابیس نسخه پشتیبان بگیرم و بازیابی کنم؟

تشکر

BORHAN TEC
پنج شنبه 12 مرداد 1391, 15:27 عصر
همانطور که می دانید نسخه embeded برای استفاده یک کاربر است و اگر می خواهید چند کاربر به صورت همزمان از دیتابیس استفاده کنند باید از نسخه سروری FireBird استفاده کنید. از آنجایی که شما از نسخه embeded استفاده می کنید عملیات Backup فقط ایجاد یک کپی از پایگاه داده است و عملیات Restore هم جایگزینی فایل پایگاه داده با یک فایل دیگر است. توجه داشته باشید که برای ایجاد یک کپی از فایل پایگاه داده اول باید ارتباط برنامه با پایگاه داده قطع شود. به عبارتی دیگر:
SQLConnection1.Close;
البته موقعی که فایل پایگاه داده در حال استفاده باشد هم می تواند از آن Backup تهیه کرد ولی در این صورت روش کار کاملاً متفاوت است. که نمونه ای از کد آنرا آقای "مهران رسا (http://barnamenevis.org/member.php?58987-%D9%85%D9%87%D8%B1%D8%A7%D9%86-%D8%B1%D8%B3%D8%A7)" از قبل نوشته اند و در پست شماره 64 از تاپیک زیر قرار داده اند:
http://barnamenevis.org/showthread.php?209792-%D8%B3%D9%88%D8%B1%D8%B3%D9%87%D8%A7%D9%8A-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%D9%8A&p=1332096&viewfull=1#post1332096

کامروا
پنج شنبه 12 مرداد 1391, 15:36 عصر
همانطور که می دانید نسخه embeded برای استفاده یک کاربر است و اگر می خواهید چند کاربر به صورت همزمان از دیتابیس استفاده کنند باید از نسخه سروری FireBird استفاده کنید. از آنجایی که شما از نسخه embeded استفاده می کنید عملیات Backup فقط ایجاد یک کپی از پایگاه داده است و عملیات Restore هم جایگزینی فایل پایگاه داده با یک فایل دیگر است. توجه داشته باشید که برای ایجاد یک کپی از فایل پایگاه داده اول باید ارتباط برنامه با پایگاه داده قطع شود. به عبارتی دیگر:
SQLConnection1.Close;
البته موقعی که فایل پایگاه داده در حال استفاده باشد هم می تواند از آن Backup تهیه کرد ولی در این صورت روش کار کاملاً متفاوت است. که نمونه ای از کد آنرا آقای "مهران رسا (http://barnamenevis.org/member.php?58987-%D9%85%D9%87%D8%B1%D8%A7%D9%86-%D8%B1%D8%B3%D8%A7)" از قبل نوشته اند و در پست شماره 64 از تاپیک زیر قرار داده اند:
http://barnamenevis.org/showthread.php?209792-%D8%B3%D9%88%D8%B1%D8%B3%D9%87%D8%A7%D9%8A-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%D9%8A&p=1332096&viewfull=1#post1332096
ممنون آقای عشایری

اما از طریق gbak میتوانیم Backup با پسوند FBK تولید کنیم که حجمشون هم خیلی کمتر از FDB هست.
چطور میتونم از gbak در دلفی استفاده کنیم؟

BORHAN TEC
پنج شنبه 12 مرداد 1391, 15:55 عصر
gbak یک ابزار command line است که به راحتی می توانید در دلفی از آن استفاده کنید. برای اجرای این برنامه با پارامترهای مورد نیاز می تواید از توابعی مثل ShellExecute در دلفی استفاده کنید که اگر در همین سایت جستجو کنید مطالب زیادی در مورد استفاده از این تابع وجود خواهد داشت.

کامروا
پنج شنبه 12 مرداد 1391, 15:59 عصر
gbak یک ابزار command line است که به راحتی می توانید در دلفی از آن استفاده کنید. برای اجرای این برنامه با پارامترهای مورد نیاز می تواید از توابعی مثل ShellExecute در دلفی استفاده کنید که اگر در همین سایت جستجو کنید مطالب زیادی در مورد استفاده از این تابع وجود خواهد داشت.
با WinExec هر کاری کردم نتونستم دستور gbak رو استفاده کنم. اما از طریق خود cmd به راحتی قابل استفاده هست.

BORHAN TEC
پنج شنبه 12 مرداد 1391, 16:13 عصر
از winExecute به هیچ عنوان استفاده نکن چرا که بر مبنای کاراکترهای ansi است و اگر بخواهید با دایرکتوریهایی که نام آنها بر مبنای کاراکترهای یونیکد است کار کنید به مشکل بر می خورید.
این هم نحوه استفاده از ShellExecute:

uses
Winapi.ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(0, 'open', 'c:\gbak.exe',
'-v -t -user sysdba -password masterkey -se dbserver/3051:service_mgr ' +
'c:\Programme\Firebird2\security2.fdb C:\Backups\Security2.fbk', 'c:\',
SW_SHOWNORMAL);
end;