PDA

View Full Version : ریستور کردن



matin-sajjadi
جمعه 11 آبان 1386, 01:57 صبح
سلام من این کد را برای ریستور کردن در سی شارپ نوشتم اما خطای زیر را میده لطفا یک کمک بکنید


try
{
open1.Filter = "Backup File (*.bak)|*.bak";
open1.FilterIndex = 1;
open1.Title = "بازیابی از اطلاعات";
if (open1.ShowDialog() == DialogResult.OK)
{
strfilename1 = open1.FileName;
}
cmd = new SqlCommand("server=.;database=shahr;integrated security=true;", objConnection);
cmd.CommandText = "ALTER DATABASE shahr SET SINGLE_USER with ROLLBACK IMMEDIATE RESTORE DATABASE shahr FROM DISK='" + strfilename1 + "' with REPLACE ALTER DATABASE shahr SET MULTI_USER";
this.Cursor = Cursors.WaitCursor;

cmd.Connection.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("اطلاعات به صورت کامل بازیابی شد");
cmd.Connection.Close();
this.Cursor = Cursors.Default;
}
catch(System.Exception error)
{
MessageBox.Show(error.Message);
cmd.Connection.Close();
}

fereshte22
جمعه 11 آبان 1386, 16:58 عصر
سلام
من یه مشکل تقریبا مشابه شما داشتم با کد زیر که دوستان انجمن راهنمایی کردند حل شد.



Dim cmdselect1 As SqlCommand
cmdselect1 = New System.Data.SqlClient.SqlCommand("ALTER DATABASE ssgshop SET OFFLINE WITH ROLLBACK IMMEDIATE", con)
con.Open()
cmdselect1.ExecuteNonQuery()
con.Close()
Dim cmdselect As SqlCommand
cmdselect = New System.Data.SqlClient.SqlCommand("RESTORE DATABASE [ssgshop ] FROM DISK = '" & TextBox2.Text & "' with replace ", con)
Dim da AsNew SqlDataAdapter(cmdselect)
con.Open()
cmdselect.ExecuteNonQuery()
con.Close()

mhadvi_mahmaood
جمعه 11 آبان 1386, 18:07 عصر
یه بار دیگه هم باید دیتابیس به حالت آنلاین در بیاد. در آخر باید اینکار رو بکنی و گرنه نمیتونی از دیتابیس استفاده کنی

ALTER DATABASE ssgshop SET ONLINE

fereshte22
جمعه 11 آبان 1386, 19:09 عصر
نیازی به دستور بالا نیست.وقتی دستور restore database اجرا میشود دیتابیس خودش به حالت online در میآید.

matin-sajjadi
سه شنبه 15 آبان 1386, 01:14 صبح
شرمنده ولی دستورات بالا باز هم خطا میده میشه راهنمایی کنید با سی شارپ

fereshte22
سه شنبه 15 آبان 1386, 11:24 صبح
میشه بگید چه خطایی میگیرد؟

hdv212
سه شنبه 15 آبان 1386, 12:28 عصر
خب معلومه که خطا میگیره، به خاطر اینکه دیتابیسی که در حال استفاده س رو که نمیتونید Restore کنید، اول Command تون این دستور رو بدید :
use master