PDA

View Full Version : سوال: خطا در هنگام restore از sql express



yones136969
سه شنبه 01 مهر 1393, 10:42 صبح
سلام



من با sql express این کد برای restore نوشتم



openFileDialog1.ShowDialog();
SqlConnection cs = new SqlConnection("Data Source=.\\SQLEXPRESS; AttachDbFilename=" + Application.StartupPath + "\\mosque-maindb.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True");
SqlCommand cmds = new SqlCommand();
cmds.Connection = cs;
cs.Open();
//cmds.CommandText = "ALTER database mosque-maindb set single_user with rollback immediate" + " use master " + " RESTORE DATABASE mosque-maindb FROM DISK='" + openFileDialog1.FileName + "' with recovery ";
cmds.CommandText = "USE [master]; RESTORE DATABASE [" + Application.StartupPath + "\\mosque-maindb.mdf] FROM DISK = N'" + openFileDialog1.FileName + "' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10";
cmds.ExecuteNonQuery();
MessageBox.Show("successful Restor");
cs.Close();
اما این خطا رو میده



Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.
لطفا راهنمایی کنید.

Mori Bone
سه شنبه 01 مهر 1393, 10:48 صبح
میتونم بپرسم چرا توی این قسمت(گفتگو با مدیران) تاپیک زدید. اصلا این تاپیک شما مربوط به این قسمت نمیشه.
مدیران منتقل کنند

مهدی کرامتی
سه شنبه 01 مهر 1393, 10:57 صبح
تاپیک به بخش #C منتقل شد.

yones136969
سه شنبه 01 مهر 1393, 11:19 صبح
با سلام
اولین بار که این سایت و مشاهده کردم و خیلی هم عجله دارم که به پاسخ برسم به هر حال عذر می خوام باعث مکدر شدن خاطرتون شدم.

ghasem110deh
سه شنبه 01 مهر 1393, 12:25 عصر
سلام ...
ایجاد متد بک آپ گیری :


private void Backuper(string filename) {
try
{
string command = @"BACKUP DATABASE IRAN TO DISK=N'" + filename + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand ocommand = null;
SqlConnection oconnection = null;
oconnection = new SqlConnection("Data Source=.;Initial Catalog=IRAN;Integrated Security=True;user id=sa");
progressBarX1.PerformStep();
if (oconnection.State != ConnectionState.Open)
oconnection.Open();
progressBarX1.Value = 10;
ocommand = new SqlCommand(command, oconnection);
progressBarX1.Value = 50;
ocommand.ExecuteNonQuery();
progressBarX1.Value = 80;
this.Cursor = Cursors.Default;
progressBarX1.Value = 100;
MessageBox.Show("تهیه نسخه پشتیبان از اطلا عات با موفقیت انجام شد");
}
catch (Exception ex)
{
MessageBox.Show("Error : ", ex.Message);
}
}

ایجاد متد ری استور :


private void Restore(string strFileName) {
try
{
if (strFileName != string.Empty)
{
progressBarX1.PerformStep();
string command = "ALTER DATABASE IRAN SET OFFLINE with ROLLBACK IMMEDIATE RESTORE DATABASE IRAN FROM DISK = '" + strFileName + "'" + " WITH REPLACE";
var oConnection = new SqlConnection("server=localhost;Integrated security=true;database=IRAN");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
progressBarX1.Value = 10;
var oCommand = new SqlCommand(command, oConnection);
progressBarX1.Value = 50;
oCommand.ExecuteNonQuery();
progressBarX1.Value = 100;
MessageBox.Show(". بازيابی اطلاعات از نسخه پشتيبان با موفقيت انجام شد");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

کلید های بک آپ و ری استور در فرم :


private void button1_Click(object sender, EventArgs e) {
string strFileName = string.Empty;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.DefaultExt = "";
saveFileDialog1.Filter = @"SQL Backup Files (*.*) |*.*| (*.Bak)|*.Bak";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.Title = "Backup SQL File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
Backuper(strFileName);
}
}


private void button2_Click(object sender, EventArgs e)
{
string filename = string.Empty;
openFileDialog1.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Filter = @"SQL Backup Files (*.*)|";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = openFileDialog1.FileName;
Restore(filename);
}

امیدوارم بدردتون بخوره !