PDA

View Full Version : سوال: Restore کردن یک پشتیبان از بانک SQL Server2000



سيد مجتبي هاشمي
جمعه 01 آذر 1387, 17:57 عصر
من برای Restore کردن یک پشتیبان گرفته شده از بانک SQL Server2000 از کد زیر استفاده کرده ام. اما مشکلاتی دارد. لطفا مرا راهنمایی کنید.



procedure TRestre.Button1Click(Sender: TObject);
var
s:string;
begin
if ShellListView1.ItemFocused.Selected = false then
begin
MessageDlg('Please select the file',mtInformation,[mbOK],0);
ShellListView1.SetFocus;
end
else
begin
s:=ExtractFileExt(ShellListView1.selectedfolder.Pa thName);
if DirectoryExists(ShellListView1.Selectedfolder.Path Name) then
begin
MessageDlg('you are select the folder. Please select the file',mtWarning,[mbOK],0);
end
else
if Length(s)>0 then
MessageDlg('typr file is invaled',mtWarning,[mbOK],0)
else
begin
dm.ADOConnection1.Close;
try
with ADOCommand1 do
begin
CommandText:='ALTER DATABASE photographer SET SINGLE_USER WITH ROLLBACK IMMEDIATE';
execute;
CommandText:='use master RESTORE DATABASE photographer FROM DISK='+QuotedStr(ShellListView1.selectedfolder.Pat hName);
execute;
end;
MessageDlg('Restore Succeefull',mtInformation,[mbOK],0);
ShellComboBox1.ItemIndex := 0;
except
MessageDlg('try again',mtError,[mbOK],0);
ShellComboBox1.SetFocus;
end;
end;
dm.ADOConnection1.Open;
end;
end;


مشکل اول:
if ShellListView1.ItemFocused.Selected = false then
begin
MessageDlg('Please select the file',mtInformation,[mbOK],0);
ShellListView1.SetFocus;
این کد اجرا نمیشود؟ راهنمایی کنید:

مشکل دوم:
dm.ADOConnection1.Open که بعد از Restore کردن نوشته شده و برای اتصال مجدد به پایگاه داده است اجرا نمیشود.

مشکل سوم:
در صورتی که dm.ADOConnection1.close و dm.ADOConnection1.Open را ننویسم پیام خطای زیر را میدهد.
http://barnamenevis.org/forum/M:\untitled.bmp
از دوستان خواهش میکنم راهنمایی کنید. ممنون میشم ازتون.


در ضمن همین کد را زمانی که در برنامه ای که به DataBase وصل نیست اجرا کنم یا اینکه آن را قبل از ورود به نرم افزار اجرا کنم درست اجرا میشه.

Pr0grammer
جمعه 01 آذر 1387, 19:21 عصر
http://barnamenevis.org/forum/showthread.php?t=32985
http://barnamenevis.org/forum/showthread.php?t=32723
http://barnamenevis.org/forum/search.php?searchid=1179483

سيد مجتبي هاشمي
جمعه 08 آذر 1387, 20:19 عصر
ممنونم از شما ولي من اين كد را از روي همين ها نوشتم. دوستان تو را به خدا اگه ميتونيد بهم كمك كنيد تا مشكلم حل بشه؟

سيد مجتبي هاشمي
چهارشنبه 13 آذر 1387, 16:28 عصر
با سلام مجدد. واقعا بین شما برنامه نوسهای این سایت یک نفر هم پیدا نمیشه که بتونه جواب منو بده و این مشکل رو حل بکنه؟

Ahmad Chehreghani
چهارشنبه 13 آذر 1387, 16:58 عصر
سلام



If OpenDialog1.Execute Then
begin
ADOCommand1.Connection:=ADOConnection1;
with ADOCommand1 do
begin
CommandText:='RESTORE DATABASE DatabaseName FROM DISK=DatabasePath';
execute
end;
ShowMessage('Restored');
end;



اول بايد مطمئن بشي که هيچ کانکشني به ديتابيست وصل نيست، بعد کار بازيابي رو انجام بدي
بعضي مواقع با Close کردن کانکشن هم نميتوني بازيابي رو شروع کني چون کانکشن فعاله و بايد با دستورات Sql اتصالات را قطع کني

موفق باشيد

Pr0grammer
چهارشنبه 13 آذر 1387, 20:10 عصر
با سلام مجدد. واقعا بین شما برنامه نوسهای این سایت یک نفر هم پیدا نمیشه که بتونه جواب منو بده و این مشکل رو حل بکنه؟

دوست من اون تاپیک ها مشکلی نداشتن؛ من تست کردم! بیشتر بررسی کنید. :چشمک:

سيد مجتبي هاشمي
یک شنبه 17 آذر 1387, 09:07 صبح
سلام



If OpenDialog1.Execute Then
begin
ADOCommand1.Connection:=ADOConnection1;
with ADOCommand1 do
begin
CommandText:='RESTORE DATABASE DatabaseName FROM DISK=DatabasePath';
execute
end;
ShowMessage('Restored');
end;



اول بايد مطمئن بشي که هيچ کانکشني به ديتابيست وصل نيست، بعد کار بازيابي رو انجام بدي
بعضي مواقع با Close کردن کانکشن هم نميتوني بازيابي رو شروع کني چون کانکشن فعاله و بايد با دستورات Sql اتصالات را قطع کني

موفق باشيد


از شما ممنونم. اما مشکل من در Restore کردن نیست. مشکل من اینه که بعد از Restore کردن با دستور ADOConnection1.open نمیتونم به بانک متصل بشوم.

سيد مجتبي هاشمي
سه شنبه 19 آذر 1387, 11:08 صبح
سلام. دوستان کسی نمیخواد بگه چه طوری میتونم این مشکل رو حل کنم. یعنی چه کار کنم که دستور ADOConnection1.open بعد از ریستور کردن اجرا بشه و دوباره بتونم به بانک وصل بشم.

Ahmad Chehreghani
سه شنبه 19 آذر 1387, 20:28 عصر
واقعيتش من که باهاش کار کردم درست کار کرد.
اگه يه نمونه بزاري جواب دادن راحت تر مي شه