ورود

View Full Version : گرفتن Backup و Restore کردن



ICEMAN
شنبه 07 اردیبهشت 1387, 09:30 صبح
سلام من Sql Server رو روی یه سیستم دیگه به عنوان Server نصب کردم
و میخوام کاربری که نصف کارشو محل کارش انجام داده بقیه کارشو بتونه بره خونه انجام بده؟

اول باید بتونم روی Client هام یه Backup از بانک بگیرم
و بعد بتونم restore ش کنم
1 ) این کار و چطوری انجام بده ؟

آیا لازمه که Sql Server روی سیستم منزل کاربر هم نصب باشه ؟Attach a database file as
database name برای چی هست؟


ممنون

delphiprog3000
شنبه 07 اردیبهشت 1387, 09:59 صبح
سلام دوست عزیز قبل از ایجاد اگه جستجو میکردید جواب سوالاتونو میگرفتید.......

لینک:

http://barnamenevis.org/forum/showthread.php?t=19276&highlight=backup+restore

http://barnamenevis.org/forum/showthread.php?t=32985&highlight=backup+restore

http://barnamenevis.org/forum/showthread.php?t=59502&highlight=backup+restore

http://barnamenevis.org/forum/showthread.php?t=32723&highlight=backup+restore

http://barnamenevis.org/forum/showthread.php?t=57211&highlight=backup+restore

http://barnamenevis.org/forum/showthread.php?t=36064&highlight=backup+restore

http://barnamenevis.org/forum/showthread.php?t=32351&highlight=backup+restore

http://barnamenevis.org/forum/showthread.php?t=8126&highlight=backup+restore


موفق باشید................

ICEMAN
شنبه 07 اردیبهشت 1387, 11:08 صبح
من همه اون ها رو دیدم و کد ها شو تست کردم ولی برای Restore کردن مشکل دارم میگه Database در حال استفاده می باشد همه Table هام رو Active= False کردم ولی هنوز این مشکل رو دارم Master و ... هم مشکلم و حل نکرد

delphiprog3000
شنبه 07 اردیبهشت 1387, 11:20 صبح
سلام.

دوست عزیز من دقیقا این مشکل رو دیدم آقای کشاورز حل کردن.

تاپیکشو یادم نیست ولی اسم آقای کشاورز رو اگه جستجو کنید میبینید اگه هم پیداش کنم میزارم براتون......

موفق باشید.......

delphiprog3000
شنبه 07 اردیبهشت 1387, 12:23 عصر
اینم دوتا لینک:

http://barnamenevis.org/forum/showthread.php?t=59502&highlight=Restore

http://barnamenevis.org/forum/showthread.php?t=64217&highlight=Restore

vcldeveloper
شنبه 07 اردیبهشت 1387, 12:47 عصر
من دقیقا این مشکل رو دیدم آقای کشاورز حل کردن.

من یادم نمیاد تا بحال درباره Backup و Restore بانک در SQL Server پستی زده باشم. شاید منظورتون آقای خورسندی بوده.

delphiprog3000
شنبه 07 اردیبهشت 1387, 20:28 عصر
برای Restore کردن مشکل دارم میگه Database در حال استفاده می باشد همه Table هام رو Active= False کردم ولی هنوز این مشکل رو دارم Master و ... هم مشکلم و حل نکرد

سلام جناب کشاورز من در یکی از پستهاتون دیدم که این مشکل رو حل کردین.

حالا خودتون بهتر میدونین..............

dkhatibi
یک شنبه 08 اردیبهشت 1387, 19:34 عصر
این مشکل حل شده و تاپیکهایی نیز برای این منظور هست.
برای رفع مشکلتون یک کوئری گذاشته و اون فقط به دیتابیس Master متصبل کنید.

delphiprog3000
سه شنبه 10 اردیبهشت 1387, 09:53 صبح
سلام دوست عزیز جناب خطیبی.

میشه لطفا کاملتر توضیح بدین.
کاره خاص دیگه ای نباید انجام داد؟؟

با تشکر......................

delphiprog3000
یک شنبه 15 اردیبهشت 1387, 12:54 عصر
سلام .

از اساتید محترم خواستارم در مورد مطلبی که جناب خطیبی ذکر کردند توضیح کاملی بدهند....

با تشکر.....................

dkhatibi
یک شنبه 19 خرداد 1387, 22:28 عصر
با سلام
یک کوتری باید دیتابیس را restore کنه! اون کونری را به دیتابیسی که از اون استفاده می کنید متصل نکنید. می تونید به یکی از دیتابیسهای پیش فرض sqlserver که به همراه نصب ، نصب می شن متصل کنید.
بع هم کد restore زا بنویسید. ضمنا شاید لازم باشه مقدار TimeOut را تغییر بدید.
درصورتیکه مشکلتون حل نشد بعدا کدی را که من خودم ازش استفاده می کنم را می گذارم.

delphiprog3000
سه شنبه 21 خرداد 1387, 18:19 عصر
با سلام.
دوست عزیز ممنون میشم اگه نمونه کدتون رو بزارین.....

با تشکر از شما............

dkhatibi
جمعه 24 خرداد 1387, 23:00 عصر
این کد را ببینید.
برای Back up


procedure TBackUpForm.BitBtn1Click(Sender: TObject);
var
str,s,s1,s2,s3:string;
d:tdate;
begin
dm.ADOConnection1.Connected:=false;
str:=ShellTreeView1.Path;
d:=date;
s:=ShDateToStr(d); //Create a name with current date
s1:=copy(s,1,4);
s2:=copy(s,6,2);
s3:=copy(s,9,2);
s:='backup_'+s1+'_'+s2+'_'+s3;
str:=str+'\'+s;
if FileExists(Str) then begin
if MessageBox(Handle,'ÈÑÇí ÇãÑæÒ í˜ äÓÎå í ÔÊíÈÇä Êåíå ÔÏå ÇÓÊ. ÂíÇ ãí ÎæÇåíÏ Çíä äÓÎå ÌÇíÒíä ÑÏÏ¿','åÔÏÇÑ ÝÇíá ʘÑÇÑí ÏÑ æÔå',MB_YESNO+MB_TOPMOST+MB_ICONEXCLAMATION+M B_RIGHT)=mryes then
Deletefile(Str)
else
Abort;
end;

try
dm.Q_Temp.SQL.Clear;
dm.Q_Temp.SQL.Text:='BACKUP DATABASE Madraseh TO DISK='+QuotedStr ( str);
DM.Q_Temp.ExecSQL;
MessageBox(Handle,'.ÝÑÂíäÏ Êåíå í äÓÎå í ÔÊíÈÇä ÈÇ ãæÝÞíÊ ÇäÌÇã ÔÏ','ÔÊíÈÇä íÑí ãæÝÞíÊ ÂãíÒ',MB_TOPMOST+MB_RIGHT+MB_ICONINFORMATION+M B_OK);
except
MessageBox(Handle,'!Êåíå í äÓÎå í ÔÊíÈÇä Ô˜ÓÊ ÎæÑÏ. ãÌÏÏÇ ÓÚí ˜äíÏ','ÎØÇ ÏÑ ÔÊíÈÇä íÑí',MB_TOPMOST+MB_RIGHT+MB_ICONERROR+MB_OK);
end;
//dm.ADOConnection1.Connected:=true;
MainForm.ActiveTable2; // Active All Deactive Tables
if not LogInForm.IsAdmin then
dm.TB_Dastrasi.Locate('User_Code',LogInForm.UserCo de,[])
end;


برای بازیابی


procedure TBackUpForm.BitBtn2Click(Sender: TObject);
var
s:string;
i:integer;
begin
if MessageBox(Handle,'ÂíÇ ÇÒ ÈÇÒíÇÈí ÇØáÇÚÇÊ ÇäÊÎÇÈ ÔÏå ãØãÆä ãí ÈÇÔíÏ¿','åÔÏÇÑ ÏÑ ÈÇÒíÇÈí',MB_TOPMOST+MB_RIGHT+MB_ICONQUESTIO N+MB_YESNO+MB_DEFBUTTON2)=mryes then begin
MainForm.closetable();
dm.ADOConnection1.Connected:=false;

//ADOCommand1.CommandText:= 'Use master';
//ADOCommand1.Execute;
dm.Q_Temp.Active:=false;
dm.Q_Temp.SQL.Text:= 'Use master';
dm.Q_Temp.ExecSQL;
//dm.Q_Temp.Active:=false;
ADOCommand1.CommandText:='';
sleep(2);
s:=FileListBox1.FileName;
try
with ADOCommand1 do
begin
CommandText:='RESTORE DATABASE Madraseh FROM DISK='+ QuotedStr(s);
Execute;
end;
MessageBox(Handle,'.ÇØáÇÚÇÊ ÈÇ ãæÝÞíÊ ÈÇҐÑÏÇäÏå ÔÏ. ÈÑÇí ÇÍÊíÇØ ÈíÔÊÑ ÇÒ ÈÑäÇãå ÎÇÑÌ æ ÏæÈÇÑå æÇÑÏ ÔæíÏ','ÈÇÒíÇÈí ãæÝÞíÊ ÂãíÒ',MB_TOPMOST+MB_RIGHT+MB_ICONINFORMATION+M B_OK);
except
MessageBox(Handle,'!ÈÇÒíÇÈí ÇØáÇÚÇÊ ÈÇ Ô˜ÓÊ ãæÇÌå ÔÏ. ãÌÏÏÇ ÊáÇÔ äãÇííÏ','ÎØÇ ÏÑ ÈÇÒíÇÈí',MB_TOPMOST+MB_RIGHT+MB_ICONINFORMA TION+MB_OK);
end;

اصغر (پآچ)
جمعه 24 خرداد 1387, 23:25 عصر
سلام دوست من

اگه ممکنه پیام های فارسی را در یک پست دیگر بذارید فکر کنم خیلی اینجوری سخت باشه فهمیدنش!

موفق و موید باشی!

arezoo_khoshrah
جمعه 18 مرداد 1387, 22:55 عصر
دوستان عزیزم سلام، من یک سئوالی دارم که پیدا کردن جوابش خیلی برای من مهم و حیاتیه، من میخوام با استفاده از برنامه نویسی دلفی عمل restore کردن بانک اطلاعاتی رو پیاده سازی کنم. لطفا نگید که باید search میکردم و این موضوع درباره اش زیاد صحبت شده، اکثر این نوشته ها رو خوندم و از اکثر کدهایی که دوستان گذاشتن استفاده کردم ولی وقتی برنامه restore کردن رو اجرا می کنم پیغام خطا میده که از دیتابیس داره اسفاده میشه. از use master هم استفاده کردم ، از AdoConnection.connection:=false هم استفاده کردم اما باز هم با همین پیغام خطا مواجه شدم. لطفا اگر کسی این موضوع رو تجربه کرده و میدونه که اشتباه کار من کجاست ممنون میشم پاسخ من رو بده :لبخندساده:

Hsimple11
شنبه 19 مرداد 1387, 10:57 صبح
دوست گرامی باز هم بحث شده . اگر در شبکه کار میکنید :
http://barnamenevis.org/forum/showthread.php?t=114396&highlight=kill

arezoo_khoshrah
شنبه 19 مرداد 1387, 20:48 عصر
دوست گرامی باز هم بحث شده . اگر در شبکه کار میکنید :
http://barnamenevis.org/forum/showthread.php?t=114396&highlight=kill
من تو شبکه کار نمی کنم ولی خودم وقتی برنامه restore رو نوشتم کار کرد ولی وقتی به برنامه مد نظرم اضافش کردم کار نکرد چون وی اون برنامه تعداد زیادی table و یه AdoConnection در datamodule دارم احساس می کنم یک کانکشن به دیتابیس بازه نمیدونم باید جدولها رو close کنم کانکشن رو false کردم ولی جوابی نگرفتم همچنان میگه داره ا ز دیتابیس استفاده میشه:عصبانی++:

m-khorsandi
یک شنبه 20 مرداد 1387, 07:51 صبح
اگر همه جداول به يك Connection وصل باشند بعد از بستن Connection تمام جداول بسته ميشن،
وسعت مطالب موجود در سايت در مورد Backup - Restore بقدری زياد هست كه ميشه راههای مختلف تهيه نسخه پشتيبان/بازيابی رو به صورت يك كتاب راهنما تهيه كرد.
وقتی قصد Restore كردن داری و پيغام خطا رو دريافت ميكنی، ليست process های SQL Server رو ببين و پروسسی كه در حال استفاده از ديتابيست هست رو پيدا كن.

ehsan11
یک شنبه 27 دی 1388, 09:28 صبح
سلام
من از این کد برای بازگردانی اطلاعات استفاده کردم ولی خطای زیر رو میده

string command = "ALTER DATABASE ali SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE ali FROM DISK='" + strFileName + "'"; ;
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=ali;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;


اما خطاهای اون
1-
Cannot open database "ali" requested by the login. The login failed.
Login failed for user 'EH-PC\Eh'.

2-


Invalid zero-length device name. Reissue the BACKUP statement with a valid device name.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.

ehsan11
یک شنبه 27 دی 1388, 09:47 صبح
سلام
من از این کد برای بازگردانی اطلاعات استفاده کردم ولی خطای زیر رو میده

string command = "ALTER DATABASE ali SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE ali FROM DISK='" + strFileName + "'"; ;
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=ali;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;


اما خطاهای اون
1-
Cannot open database "ali" requested by the login. The login failed.
Login failed for user 'EH-PC\Eh'.

2-


Invalid zero-length device name. Reissue the BACKUP statement with a valid device name.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.

ehsan11
یک شنبه 27 دی 1388, 09:54 صبح
سلام
من از این کد برای بازگردانی اطلاعات استفاده کردم ولی خطای زیر رو میده

string command = "ALTER DATABASE ali SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE ali FROM DISK='" + strFileName + "'"; ;
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=ali;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;


اما خطاهای اون
1-
Cannot open database "ali" requested by the login. The login failed.
Login failed for user 'EH-PC\Eh'.

2-


Invalid zero-length device name. Reissue the BACKUP statement with a valid device name.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.

DataMaster
یک شنبه 27 دی 1388, 12:50 عصر
سلام
من از این کد برای بازگردانی اطلاعات استفاده کردم ولی خطای زیر رو میده

string command = "ALTER DATABASE ali SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE ali FROM DISK='" + strFileName + "'"; ;
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=ali;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;


اما خطاهای اون
1-
Cannot open database "ali" requested by the login. The login failed.
Login failed for user 'EH-PC\Eh'.

2-


Invalid zero-length device name. Reissue the BACKUP statement with a valid device name.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.
پسر خوب اینا کد سی شارپ هستن تو بخش مربوطه سوال کن

حسین شهریاری
یک شنبه 27 دی 1388, 13:01 عصر
سلام

من مدتی پیش روشی را که خودم بهش رسیده بودم را قدم به قدم توضیح داده بودم.توی صفحه سوم بود.لینک زیر را ببینید.یکی از افرادی که جواب دادن خود من بودم که مرحله به مرحله شرح دادم.
اگه دیدین نمیشه بگید تا یونیت آماده BakUp و Restor را براتون همینجا قرار بدم.

موفق باشید.

http://barnamenevis.org/forum/showthread.php?t=173232