PDA

View Full Version : سوال: بازیابی یا ریستور بانک اطلاعاتی در برنامه



neda_dela
دوشنبه 07 تیر 1389, 00:11 صبح
سلام
بچه ها تو رو خدا یکی منو کمک کنه یه بار دیگه هم این س.وال رو مطرح کردم ولی جواب نگرفتم امیدوارم این بار جواب بگیرم
ببینید من کد پشتیبان گیری و ریستور رو میذارم . کد پشتیبانم که جواب میده ولی ریستور نخیر جواب نمیده


if (MessageBox.Show("™یں êی¦يںىی§ ںھ ںëک ںلéںمں¢ی پ¬¢ی ںë گی©ی ëêںیی§؟", "¥©ں«¢ ىêگںê", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
string strFileName = string.Empty;
saveFileDialog1.Filter = @"sql backup file (*.bak) | *.bak|all files (*.*) |*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.Title = "¨¦ی©ى «ںھی هںیé پ¬¢ی ںë";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
Application.DoEvents();
strFileName = saveFileDialog1.FileName;
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=quran;Integrated Security=True";
SqlCommand com = new SqlCommand();
try
{
con.Open();
string query = "BACKUP DATABASE quran TO DISK = '" + strFileName + "'";
com.CommandText = query;
com.Connection = con;
com.ExecuteNonQuery();
con.Close();
MessageBox.Show("پشتیبان گیری به درستی انجام شد");
}
catch
{
MessageBox.Show("اشکال در ارتباط با بانک اطلاعاتی");
}
}
}

کد ریستور


if (MessageBox.Show("™یں êی¦يںىی§ «ی«¢ê ©ں ںھیں ی کëی§؟", "¥©ں«¢ ىêگںê", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
string strFileName = string.Empty;
openFileDialog1.Filter = @"sql backup file (*.bak) | *.bak|all files (*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "ں«¢هں§ى ںھ هںیé پ¬¢ی ںë";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Application.DoEvents();
strFileName = openFileDialog1.FileName;
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=quran;Integrated Security=True";
SqlCommand com = new SqlCommand();
try
{
string query = "USE master RESTORE DATABASE [quran] FROM DISK = '" + strFileName + "'";
com.CommandText = query;
com.Connection = con;
con.Open();
com.ExecuteNonQuery();
con.Close();
MessageBox.Show(" بازیابی بانک اطلاعاتی به درستی انجام شد");
}
catch
{
MessageBox.Show("اشکال در ارتباط با بانک اطلاعاتی");
}
}
}

خطا داره:

Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.
فکر کنم منظورش اینه که چون بانک فعاله و در حال استفاده هست نمیشه این کار انجام بشه
چی کار کنم حالا؟:لبخندساده:

arkia
یک شنبه 20 تیر 1389, 19:36 عصر
بانک در حال استفاده است باید کانکشن free شود

ahmad_lovely
یک شنبه 20 تیر 1389, 19:52 عصر
منم این مشکل داشتم، یکی از دوستان تونست مشکلمو حل کنه، حالا کدشو می زارم تا مشکل توام حل بشه !



if (openFileDialog1.FileName.EndsWith(".bak") == true)
{

string s1 = "ALTER DATABASE [C:\\ForooshgaheKala_Database.mdf] SET OFFLINE WITH ROLLBACK IMMEDIATE";

string s2 = "ALTER DATABASE [C:\\ForooshgaheKala_Database.mdf] SET MULTI_USER";

string query = "RESTORE DATABASE [C:\\ForooshgaheKala_Database.mdf] FROM DISK ='" + openFileDialog1.FileName + "' WITH RECOVERY,REPLACE";

SqlCommand cmd = new SqlCommand();
cmd.CommandText = s1;
cmd.Connection = connect;
cmd.ExecuteNonQuery();

cmd.CommandText = s2;
cmd.Connection = connect;
cmd.ExecuteNonQuery();

cmd.CommandText = query;
cmd.Connection = connect;
cmd.ExecuteNonQuery();

cmd.Dispose();

connect.Close();