منم مثه شما از این دست دستورات دارم اما از این کد واسه رستور استفاده میکنم و مشکلم هم حل شده :
objconnection.Open();
if (openFileDialog_restore.ShowDialog() == DialogResult.OK)
if (openFileDialog_restore.FileName.EndsWith(".bak") == true)
{
backgroundWorker1.RunWorkerAsync();
string s1 = "ALTER DATABASE [" + Application.StartupPath + "\\sodour.mdf] SET OFFLINE WITH ROLLBACK IMMEDIATE";
string s2 = "ALTER DATABASE [" + Application.StartupPath + "\\sodour.mdf] SET MULTI_USER";
string query = "RESTORE DATABASE [" + Application.StartupPath + "\\sodour.mdf] FROM DISK ='" + openFileDialog_restore.FileName + "' WITH RECOVERY,REPLACE";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = s1;
cmd.Connection = objconnection;
cmd.ExecuteNonQuery();
cmd.CommandText = s2;
cmd.Connection = objconnection;
cmd.ExecuteNonQuery();
cmd.CommandText = query;
cmd.Connection = objconnection;
cmd.ExecuteNonQuery();
cmd.Dispose();
backgroundWorker1.CancelAsync();
Application.Restart();
}
else
FarsiMessageBox.FMessageBox.Show("فایل با پسوند .bak انتخاب کنید", "خطا", FarsiMessageBox.FMessageBoxButtons.OK, FarsiMessageBox.FMessageBoxIcons.Error, FarsiMessageBox.FMessageBoxDefaultButtons.Button3) ;