PDA

View Full Version : مشکل در کد بازبینی اطلاعات پشتیبانی گیری شده



saeedhushmand
شنبه 28 آبان 1390, 20:37 عصر
مشکل کد زیر چیه که هنگام بازبینی اطلاعات پشتیبانی گیری شده ارور می ده

کد

privatevoid ll_Click(object sender, EventArgs e)
{
string strFileName = string.Empty;
openFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files
(*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restore SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = saveFileDialog1.FileName;
Restore(strFileName);
}
}
privatevoid Restore(string strFileName)
{
try
{
string sqlcommand = "ALTER DATABASE laberator SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master" +" RESTORE DATABASE laberator FROM DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = newSqlConnection("Data Source=.;Initial Catalog=laberator;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = newSqlCommand(sqlcommand, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
MessageBox.Show("بازيابی اطلاعات از نسخه پشتيبان با موفقيت انجام شد");
}
catch (Exception ex)
{
MessageBox.Show("Error Occurd :" + ex.Message);
}


عکس ارورشم اینه


78102

بعد در کنار نام دیتابیسم در sql management می نویسه single user

sanay_esh
شنبه 28 آبان 1390, 20:55 عصر
البته ببخشید که من کد شما رو تست نکردم

ولی به نظرم باید در داخل یک ترنز اکشن transaction بذاری و دوباره امتحان کنی

در ضمن باید یوزری که داره این کار رو انجام میده دسترسی admin به دیتابیس داشته باشه

از خطایی هم که داره میده میشه متوجه شد که باید دسترسی به بانک مستر master داشته باشه

یه کاری بکن : اینکه یه بار دستی کار پشتیبان گیری و بازیابی رو انجام بده و قبل از این کار پروفایلر sql رو باز کن و تمامی دستوراتی که اجرا میشن رو ببین

بهترین کاری که میتونی انجام بدی اینه که از دستورات خود sql برای اینکار استفاده کنی

موفق باشی

saeedhushmand
شنبه 28 آبان 1390, 20:57 عصر
ممنون از این که وقت گذاشتی اما اگر می شه یکم واضح تر توضیح بدید ممنون می شم

zarrinnegar
شنبه 28 آبان 1390, 22:45 عصر
این قسمت
"ALTER DATABASE laberator SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master" +" RESTORE

چرا alter کردی مگه میخوای دیتابیس رو تغییر بدی؟

alter نمیخواد
از use master به بعد دستورات رو چک کن

بعدش هم توی همین خط خدت گفتی SET SINGLE_USER
بعد توی management میخوای چی نشون بده؟