求解决 c# 数据备份与还原 异常:只能终止用户进程
求解决 c# 数据备份与还原 错误:只能终止用户进程
备份没有问题,还原页面报错:只能终止用户进程。
附上还原代码及页面,求大神改正。。。。。。
代码:
public partial class 页面_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
Button1.Enabled = false;
}
else
{
}
}
private void HuanYuan()
{
//还原SqlServer数据库:
string path = this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称
string SqlStr1 = System.Web.Configuration
.WebConfigurationManager
.ConnectionStrings["GRIDConnectionString1"]
.ConnectionString;
string SqlStr2 = "use master restore database GRID from disk='" + path + "'";
SqlConnection con = new SqlConnection(SqlStr1);
con.Open();
try
{
SqlCommand com = new SqlCommand(SqlStr2, con);
com.ExecuteNonQuery();
Label1.Text = "还原数据成功!";
Button1.Enabled = false;
}
catch (Exception error)
{
Label1.Text = "还原数据失败!<br>" + error.Message;
}
finally
{
con.Close();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//HuanYuan();
//杀死所有访问该数据库的进程
string conStr = @"data source=ADMIN-PC;database=GRID;user id=sa;password=sa";
SqlConnection con = new SqlConnection(conStr);
string cmdText = String.Format("EXEC sp_KillThread @dbname='{0}'", "master");
SqlCommand com = new SqlCommand(cmdText, con);
try
{
con.Open();
com.ExecuteNonQuery();
con.Close();
//恢复数据库
GoBack();
}
catch (Exception ex)
{
con.Close();
this.Label1.Text = ex.Message;
}
}
private void GoBack()
{
string path = this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称
SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect(@".", "sa", "sa");
oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
备份没有问题,还原页面报错:只能终止用户进程。
附上还原代码及页面,求大神改正。。。。。。
代码:
public partial class 页面_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
Button1.Enabled = false;
}
else
{
}
}
private void HuanYuan()
{
//还原SqlServer数据库:
string path = this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称
string SqlStr1 = System.Web.Configuration
.WebConfigurationManager
.ConnectionStrings["GRIDConnectionString1"]
.ConnectionString;
string SqlStr2 = "use master restore database GRID from disk='" + path + "'";
SqlConnection con = new SqlConnection(SqlStr1);
con.Open();
try
{
SqlCommand com = new SqlCommand(SqlStr2, con);
com.ExecuteNonQuery();
Label1.Text = "还原数据成功!";
Button1.Enabled = false;
}
catch (Exception error)
{
Label1.Text = "还原数据失败!<br>" + error.Message;
}
finally
{
con.Close();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//HuanYuan();
//杀死所有访问该数据库的进程
string conStr = @"data source=ADMIN-PC;database=GRID;user id=sa;password=sa";
SqlConnection con = new SqlConnection(conStr);
string cmdText = String.Format("EXEC sp_KillThread @dbname='{0}'", "master");
SqlCommand com = new SqlCommand(cmdText, con);
try
{
con.Open();
com.ExecuteNonQuery();
con.Close();
//恢复数据库
GoBack();
}
catch (Exception ex)
{
con.Close();
this.Label1.Text = ex.Message;
}
}
private void GoBack()
{
string path = this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称
SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect(@".", "sa", "sa");
oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;