PDA

View Full Version : سوال: مشکل بازیابی از پشتیبان گرفته شده



mohamadlvs
پنج شنبه 28 اردیبهشت 1391, 16:48 عصر
با تمام دستورات بازیابی در این سایت امتحان کردم
و همچنین کد زیر که دقیقن بر روی یک پروژه دیگر در همین سیستمم جواب می دهد ولی بر روی پروژه من جواب نمی دهد
پیغام خطا را هم فرستادم



SqlConnection con = new SqlConnection("Server=(local);uid=sa;pwd=;database=master");
SqlCommand cmd = new SqlCommand("restore database Gold_Database from disk='" + textBox1.Text + "'", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();


لطفن راهنمایی کنید87158

mohamadlvs
پنج شنبه 28 اردیبهشت 1391, 20:11 عصر
کسی چیزی به خاطرش خطور نمی کنه؟!

abdullah20
جمعه 29 اردیبهشت 1391, 20:14 عصر
پشتیبان گیری


string strBack = "Backupname.bak";
SqlCommand scom = new SqlCommand("BACKUP DATABASE [" + dbname + "] TO DISK ='" + textAddress.text + "\\" + strBack + "'", sc);
sc.Open();
scom.ExecuteNonQuery();
sc.Close();



بازیابی


SqlCommand scom = new SqlCommand("use master ALTER DATABASE [" + dbname + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE RESTORE DATABASE [" + dbname + "] FROM DISK = '" + textAddress.text + "' ALTER DATABASE [" + dbname + "] SET MULTI_USER", sc);
sc.Open();
scom.ExecuteNonQuery();
sc.Close();

mohamadlvs
شنبه 30 اردیبهشت 1391, 08:38 صبح
بازم همون خطا رو روی خط اجرای کوئری می ده


The tail of the log for the database "Gold_Database" has not been backed up. Use
BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want
to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to
just overwrite the contents of the log.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.

negar.rafie
یک شنبه 31 اردیبهشت 1391, 19:56 عصر
برای من هم همین ارور را میده لطفا بگید مشکل از چیه

abdullah20
یک شنبه 31 اردیبهشت 1391, 20:44 عصر
به اخر رشته Restore خودتون WITH REPLACE را اضافه کنید مشکل 100درصد حل می شود

mohamadlvs
چهارشنبه 03 خرداد 1391, 00:25 صبح
بازم این خطا رو میده

Incorrect syntax near 'REPLACE'.


SqlConnection con = new SqlConnection("Server=(local);uid=sa;pwd=;database=Gold_Database");
SqlCommand cmd = new SqlCommand("use master ALTER DATABASE [Gold_Database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE RESTORE DATABASE [Gold_Database] FROM DISK = N'D:\\Gold_Database.bak' ALTER DATABASE [Gold_Database] SET MULTI_USER WITH REPLACE", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

abdullah20
چهارشنبه 03 خرداد 1391, 16:39 عصر
private void Restore(string strfilename)
{
try
{

string command = "ALTER DATABASE alarm SET SINGLE_USER with ROLLBACK IMMEDIATE " +
"use master " +
" RESTORE DATABASE alarm FROM DISK='" + strfilename + "'WITH REPLACE";


this.Cursor = Cursors.WaitCursor;
SqlConnection con = new SqlConnection();
con.ConnectionString = connection;
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand(command, con);
cmd.ExecuteNonQuery();

this.Cursor = Cursors.Default;
MessageBox.Show("بازیابی اطلاعات با موفقیت انجام شد");

}
catch(Exception ex)
{
MessageBox.Show(ex.Message );
}
}





private void buttonRestore_Click(object sender, EventArgs e)
{
string strfilename = string.Empty;
openFileDialog1.Filter = @"SQL Backup files files(*.BAK)|*.BAK|All files(*.*)|*.*";
openFileDialog1.Title = "Restore SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
strfilename = openFileDialog1.FileName;
Restore(strfilename);
}

mohamadlvs
چهارشنبه 03 خرداد 1391, 19:33 عصر
ممنون با این کد آخری حل شد ولی من که ندونستم برای چی هر چی کوئری می نوشتم جواب نمی داد ولی با این جواب داد؟!

saeed_pb
سه شنبه 21 شهریور 1391, 16:41 عصر
با سلام و خسته نباشید به همه ی دوستان گرامی
من با این کد بازیابی پشتیبان رو نوشتم که از کد هایی خودتان گذاشتید ، هست:





try
{
string command = "ALTER DATABASE Ara SET MULTI_USER with ROLLBACK IMMEDIATE RESTORE DATABASE Ara FROM DISK='" + txtadress.Text + "'WITH REPLACE";
this.Cursor = Cursors.WaitCursor;
SqlConnection con = newSqlConnection();
con.ConnectionString = "Data Source= .;Initial Catalog=master;Integrated Security=True";
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = newSqlCommand(command, con);
cmd.ExecuteNonQuery();
this.Cursor = Cursors.Default;
MessageBox.Show("بازيابي اطلاعات با موفقيت انجام شد");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


ولی این ارور رو میده :

Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.

لطفا" هر چه سریعتر کمکم کنید ممنون می شم .

roolinjax
سه شنبه 21 شهریور 1391, 17:18 عصر
با سلام
دوست عزیز این خطا واسه اینه که کانکشن باز داری
این خط رو به اول برنامه ات اضافه کن درست میشه :
SqlConnection.ClearAllPools();

saeed_pb
سه شنبه 21 شهریور 1391, 20:12 عصر
با سلام
دوست عزیز این خطا واسه اینه که کانکشن باز داری
این خط رو به اول برنامه ات اضافه کن درست میشه :
SqlConnection.ClearAllPools();


مشکلم حل شد ، خیلی خیلی ممنون .

roolinjax
سه شنبه 21 شهریور 1391, 20:14 عصر
ایشالا همه مشکلات جوونا به همین راحتی و با یه خط کد حل بشه !!!!!
موفق باشید