1 ضمیمه
آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
سلام
(براي ديدن نسخه جديد گرفتن بك آپ به صفحه دوم برويد و يا لينك زير را ببنيد:
https://barnamenevis.org/showth...765#post623765
و براي ساخت database و restore اين لينك را:
https://barnamenevis.org/showthread.php?t=32723
به زودي نسخه اصلاح شده restore نيز گذاشته ميشود.
اين پرانتز در تاريخ 8 آبان 87 اضافه شد)
این هم به همان راحتی create و restore کردن databse است!
کنترلهایی که برای این کار لازم است یک adocmmand ، یک button ویک shellTreeView یا یک ابزار دیگر شبیه آن است! (برای انتخاب مسیر ذخیره backup) و در صورت دلخواه edit برای وارد کردن نام backup جدید!
با این روش می تونید به کاربر بگید از طریق همون برنامه ای که باهاش کار می کنه به راحتی یک bachkup گرفته و بر روی cd ذخیره نماید تا با در صورتی که روزی روزگاری برای کتمپیوتر مشگلی پیش آمد مثلا هارد سوخت. با نصب مجدد برنامه و sql داده هایی که قبلا در پایگاه داده ذخیره کرده است. قابل برگشت باشد!
برای این کار ارتباط بین adocommnad1 و sql server را از طریق connection string برقرار کنید!
سپس در رویداد کلیک button کد زیر را بنویسید!
procedure TForm1.Button1Click(Sender: TObject);
var
str,s,s1,s2,s3:string;
d:tdate;
begin
str:=ShellTreeView1.Path;
d:=date;
s:=DateToStr(d);
s1:=copy(s,1,4);
s2:=copy(s,6,2);
s3:=copy(s,9,2);
s:='backup_'+s1+'_'+s2+'_'+s3;
str:=str+'\'+s;
with ADOCommand1 do
begin
CommandText:='BACKUP DATABASE mydatabase1 TO DISK='+QuotedStr ( str);
execute
end;
ShowMessage('پشتبان گیری موفقیت آمیز انجام شد');
end;
البته به جای mydatabase1 نام database خودتان را در sqlserver بنویسید!
در این کد من از تاریخ برای متمایز کردن backup ها استفاده کردم. شما در صورتی که مایل باشید. می توانید به جای این کار نام backup را در یک edit از کاربر بپرسید!
اصل کد به صورت زیر است:
backup database mydatabase1 to disc='d:/new folder/backup3'
که در قسمت disc= آدرس ذخیره سازی backup و نام آن در داخل کوتیشن ذکر می گردد!
و شما می توانید کد ذکر شده را به دلخواه خود تغییر دهید!
نمونه برنامه را ضمیمه کردم.
اگر database را که در تاپیک آموزش طریق ساخت و restore فایل backup در نمونه برنامه وجود داشت! ساخته باشدی. این برنامه کار خواهد کرد. و یا در کد آن نام mydatabase1 را به نام یکی از database ها موجود در sql خودتان تغییر دهید. تا نحوه کار آن را ببنید!
اگر انتقادی یا ایرادی وجود داشته باشه، با کمال میل می پذیرم!
موفق باشید!
خداحافظ
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
نقل قول:
نوشته شده توسط
yousef8311264897
ای بابا تاریخ پستها رو ببین بعد از این همه مدت اومدی تاپیک رو آوردی بالا
ما گفتیم یه جواب توووپ دادی !؟
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
ميخواستم ببينم چه جوري ميشه از بانك پارادكس بك آپ گرفت.
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
نقل قول:
ميخواستم ببينم چه جوري ميشه از بانك پارادكس بك آپ گرفت.
ربطی به عنوان این تاپیک نداره، و باید در تاپیک جداگانه ایی بحث بشه.
در هر حال، برای پارادکس کافیه فایل بانک اطلاعاتی را کپی کنید جای دیگه. فکر نکنم راه حل پشتیبانی گیری داشته باشه.
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
سلام آقای حبیبی .
من برنامه شما رو استفاده کردم دستتون درد نکنه . ولی یک مشکلی که هستش اینه که وقتی رو سیستم خودم عمل بک آپ رو انجام میدم در زمان restore فایل ایجاد شده در یک سیستم جدید که نسخه msde روی اون نصبه با پیغام خطایی مواجه مشم که از فقدان فایل mdf ناشی میشه . اگه میشه شما یا بقیه دوستان منو راهنماییم کنین که چه کار کنم ؟
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
برنامه جناب آقای حبیبی ، فقط برای سرور کار میکنه ، من هم استفاده کردم. حالا برای بازیابی میتونید از کامپیوتر سرور استفاده کنید و فایل BackUp رو از روی سیستم سرور بخوانید.
یا حق
1 ضمیمه
آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده! تصحيح شده!
با سلام
برنامه اي كه قبلا گذاشته بودم نواقص و ايراداتي داشت كه بيشتر دوستان به اين موضوع اشاره كرده بودند كه وقتي دوباره " گرفتن پشتيبان" را ميزنيم. تشخيص نميده فايل وجود داره و فايلي با همون اسم قبلي ساخته ميشه با حجم چند برابر.
منم تو اين مدت سال همت نكردم درستش كنم. البته كار ساده ايه هم هست.
حالا يه مقدار تغييرات دادم و اين مشكل را برطرف كردم.
البته هنوز جاي كار زيادي داره. در برنامه فعلي وقتي فايلي با اون اسم وجود داشته باشه پيغام ميده كه اسم ديگه اي انتخاب كنيد ولي شما ميتونيد اين امكان را هم اضافه كنيد كه بپرسه مي خواهيد replace بشه يا ميخواهيد خود برنامه rename كنه و مثلا _2 به اسم فايل اضافه كنه.
خلاصه اينكه هنوز اين برنامه نواقصي داره كه ديگه هر جور دوست داشتين تغييرش بدين.
************************************************** *********
نياز به يك adocommand داريد كه ارتباطش را با دلفي برقرار كنيد.
و یک shellTreeView یا یک ابزار دیگر شبیه آن براي انتخاب مسيري كه مي خواهيد فايل بك آپ آنجا ذخيره بشه.
يك edit براي وارد كردن نام فايل (edit1)
يك speedbutton براي ساخت نام پيش فرض فايل بك آپ )ميتونه button يا bitbtn هم باشه. هيچ فرقي نداره)
تو رويداد كليكش نوشته بشه
procedure TFrmBackup.SpeedButton1Click(Sender: TObject);
var
s,s1,s2,s3:string;
begin
s:=PrintNormal;
s1:=copy(s,1,4);
s2:=copy(s,6,2);
s3:=copy(s,9,2);
edit1.text:='backup'+s1+'_'+s2+'_'+s3;
end;
من invisible ش كردم. و از فرم اولي كه مي خوام وارد اين فرم بشم. مجازا كليكش ميكنم.
procedure TForm1.Button1Click(Sender: TObject);
begin
FrmBackup.show;
FrmBackup.SpeedButton1.Click;
end;
و يك button براي اجراي كد گرفتن backup كه اين كد توش نوشته شده:
procedure TFrmBackup.Button1Click(Sender: TObject);
var
str:string;
begin
str:=ShellTreeView1.Path;
str:=str+'\'+Edit1.Text;
if FileExists(str) then // check mikone file i ba in esm vojood dare ya na
begin
ShowMessage('A file with this name is exists, select another name');
Edit1.SetFocus;
end
else
begin
with ADOCommand1 do
begin
CommandText:='BACKUP DATABASE MyDataBase TO DISK='+QuotedStr ( str);
execute
end;
ShowMessage('BackUp DataBase has successfully done');
end;
end;
به جاي MyDataBase اسم database خودتون را بنويسيد
************************************************** *********
به همين سادگي! بقيه نواقص برنامه را به بزرگي خودتون ببخشيد
موفق باشيد
التماس دعا
فايل نمونه ضميمه مي باشد
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
نقل قول:
نوشته شده توسط
polpolpolpol
سلام آقای حبیبی .
من برنامه شما رو استفاده کردم دستتون درد نکنه . ولی یک مشکلی که هستش اینه که وقتی رو سیستم خودم عمل بک آپ رو انجام میدم در زمان restore فایل ایجاد شده در یک سیستم جدید که نسخه msde روی اون نصبه با پیغام خطایی مواجه مشم که از فقدان فایل mdf ناشی میشه . اگه میشه شما یا بقیه دوستان منو راهنماییم کنین که چه کار کنم ؟
با اجازه دوستان
برایrestore کردن باید یک بانک به همون نام روی SQL باشه مگر نه RESTORE نمی کنه
شما میتو نید با دستور CREATE DATA BASE یک دیتابیس خالی ایجاد کنید بعد RESTOR کنید
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
با استفاده از کد زیر Backup میگیرم ولی اگه دوباره بخوام Backup بگیرم و روی همون قبلی باشه یعنی اسم و محل ذخیره شدنش رو عوض نکنم حجم Backup گرفته شده دو برابر میشه. در یکی از تاپیکها آریوبرزن گفته بود باید از کلمه differential استفاده کرد اما نگفته بودن کجا باید استفاده بشه. لطفا اگه میتونید کمک کنید تا این مشکل رو حل کنم. ممنون.
procedure TMain.N34Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
with ADOCommand1 do
begin
CommandText:='BACKUP DATABASE photographer TO DISK='+QuotedStr(SaveDialog1.FileName);
execute
end;
ShowMessage('پشتیبان گیری با موفقیت انجام شد');
end;
end;
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
لطفا میشه بگید از این کلمه یعنی کلمه differential باید در کجای کد زیر استفاده بکنم؟
procedure TMain.N34Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
with ADOCommand1 do
begin
CommandText:='BACKUP DATABASE photographer TO DISK='+QuotedStr(SaveDialog1.FileName);
execute
end;
ShowMessage('پشتیبان گیری با موفقیت انجام شد');
end;
end;
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
آقای کشاورز شما خودتون نمیتونید یک جواب کامل برای این مشکل ارائه بدین تا مشکل من هم حل بشه؟
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
يه سر به Help مي زدي
BACKUP DATABASE { database_name | @database_name_var }
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
[/code]
CommandText:='BACKUP DATABASE photographer TO DISK='+QuotedStr(SaveDialog1.FileName) + ' WITH DIFFERENTIAL ';
[code]
ولي اين مشکلت رو حل نمي کنه با يه DeleteFile ساده Backup قبلي رو پاک کن.
يه پيشنهاد. Backup ها رو با اسمي که از تاريخ و ساعت سيستم ميگيري ذخيره کن . چه بسا روزي روزگاري به Backupي در سه هفته پيش نياز داشتي.
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
CommandText:='BACKUP DATABASE photographer TO DISK='+QuotedStr(SaveDialog1.FileName) + ' WITH DIFFERENTIAL ';
ولي اين مشکلت رو حل نمي کنه با يه DeleteFile ساده Backup قبلي رو پاک کن.
يه پيشنهاد. Backup ها رو با اسمي که از تاريخ و ساعت سيستم ميگيري ذخيره کن . چه بسا روزي روزگاري به Backupي در سه هفته پيش نياز داشتي.[/quote]
با تشکر از شما ولی همون طور که گفتین این مشکلم رو حل نکرد. در ضمن میشه در مورد کدهایی که از Help دلفی گرفتین و اینجا نوشتین توضیح بدین؟ ممنون میشم.
1 ضمیمه
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
سلام...
من دقیقاً این تاپیک رو بررسی کردم!
نمونه برنامه ها رو هم دانلود کردم که پست 20 از همه برام راحت تر بود!
اما من دقیقاً از همون روش استفاده می کنم و این اررور رو برام نشون میده! البته فایل پشتیبان رو درست میکنه ولی موقع بازیابی اطلاعات مشکل دارم (عکس ضمیمه)!
لطفاً منو هم راهنمائی کنید! ممنون
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
با کد زیر که همون کد آقای عقاب هست و من یه کم تغییرش دادم میتوننین به طور کامل از بانک برنامه پشتیبان بگیرین. روی فرم یک ShellTreeView و یک ADOCommand و یک Button قرار بدین. روی Button دو بار کلیک کنید و کد زیر را بنویسید. فایل پشتیبان گرفته شده در محلی که انتخاب میکنید با نامی که از ساعت و تاریخ جاری سیستم تشکیل شده ذخیره میشود.
procedure TBackup.Button1Click(Sender: TObject);
var
str,s,s1,s2,s3,t,t1,t2,t3,t4 : string;
begin
try
str := ShellTreeView1.Path;
s := DateToStr(Date);
s1 := copy(s,1,4);
s2 := copy(s,6,2);
s3 := copy(s,9,2);
s := 'backup_'+s1+'_'+s2+'_'+s3;
t := TimeToStr(time);
t1 := copy(t,1,2);
t2 := copy(t,4,2);
t3 := copy(t,7,2);
t4 := copy(t,10,7);
t := ' in clock '+t1+'-'+t2+'-'+t3+' '+t4;
str := str+'\'+s+t;
with ADOCommand1 do
begin
CommandText:='BACKUP DATABASE photographer TO DISK='+QuotedStr(str);
execute
end;
ShowMessage('پشتیبان گیری با موفقیت انجام شد');
except
MessageDlg('در پشتیبان گیری خطا رخ داده است. لطفا دوباره سعی کنید',mtError,[mbOK],0);
end;
end;
اگه این کد مشکلی داشت شما بگید من با کمال میل میپذیرم.
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
نقل قول:
نوشته شده توسط
mojtaba_ha2007
با کد زیر که همون کد آقای عقاب هست و من یه کم تغییرش دادم میتوننین به طور کامل از بانک برنامه پشتیبان بگیرین. روی فرم یک ShellTreeView و یک ADOCommand و یک Button قرار بدین. روی Button دو بار کلیک کنید و کد زیر را بنویسید. فایل پشتیبان گرفته شده در محلی که انتخاب میکنید با نامی که از ساعت و تاریخ جاری سیستم تشکیل شده ذخیره میشود.
اگه این کد مشکلی داشت شما بگید من با کمال میل میپذیرم.
آقا خوبه من گفتم Sample رو دانلود و از همون روش استفاده می کنم!
آخه عزیز من شما که فقط اسم فایل رو تغییر دادی! مشکل اسم فایل نیست؛
Error رو نگاه کنید؛ بعدش به Backup Log Database توی اینجا نگاه کنید :http://www.datasprings.com/Resources...S/Default.aspx
من فقط نمیدونم اصلاً مشکل از بزرگی یا اندازه Database هستش که اون error رو موقع Restor میده یا نه؟! اگه هست چطوری باید Backup Log Database... رو بکار ببرم؟!
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
اگه امکان داره یک sample برای گرفتن بکاپ و رستور (فقط برای یک سیستم)که زمانی بکاپ میگیریم حجم فایل بکاپ 2 برابر نشه و بشه اسم اون رو از تاریخ سیستم گرفت قرار دهید
با تشکر فراوان
نقل قول: آموزش طریقه گرفتن backup از پایگاه داده SQL Server در یک برنامه دلفی ساده!
با اجازه دوستان
حجم BACKup رو که ما تعیین نمی کنیم چون ما فقط با دستورات SQL به SQL SERVER فرمان پشتیبانگیری رو میدیم . شما میتونید با توابعی که برای ZIP کردن فایله تو دلفی هست انو ZIP کنی تا حجمش کم بشه ! برای گرفتن تاریخ سیستم از تابع NOW برای متغیر TDATETIME استفاده کنید بقیه هم با روشی که دوستان زحمتشو کشیدن معرفی کردن ادامه بدید