每次点数据库还原都不可以。可不可以强制关闭数据库服务器的?请高手帮忙
if(!IsPostBack)
{
string cmdtxt1 = "Data Source=.;Initial Catalog=GCGL;Integrated Security=True";
string cmdtxt2 = "Exec sp_helpdb";
SqlConnection Con = new SqlConnection(cmdtxt1);
Con.Open();
SqlCommand mycommand = new SqlCommand(cmdtxt2, Con);
SqlDataReader dr = mycommand.ExecuteReader();
this.DropDownList1.DataSource = dr;
this.DropDownList1.DataTextField = "name";
this.DropDownList1.DataBind();
dr.Close();
Con.Close();
}
protected void btn_Restore_Click(object sender, EventArgs e)
{
string path = this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称
string last = path.Substring(path.LastIndexOf(".") + 1);//获取文件的后缀名
string dbname = this.DropDownList1.SelectedValue;
if (last == "bak") //判断是不是数据库备份文件
{
string cmdtxt1 = "Data Source=.;database='" + this.DropDownList1.SelectedValue + "';Integrated Security=True";
string cmdtxt2 = "use master restore database " + dbname + " from disk='" + path + "'";
SqlConnection Con = new SqlConnection(cmdtxt1);
Con.Open();
try
{
SqlCommand Com = new SqlCommand(cmdtxt2, Con);
Com.ExecuteNonQuery();
Response.Write("<script language=javascript>alert('还原数据成功!'); location='Db_Restore.aspx'</script>");
}
catch (Exception ms)
{
Response.Write(ms.Message);
Response.Write("<script language=javascript>alert('还原数据失败!') </script>");
}
finally
{
Con.Close();
}
}
else
{
Response.Write("<script language=javascript>alert('必须是数据库文件!'); </script>");
}
}
看了一下,估计原因应该出在没有选择还原时的操作上,改成这样试试:
string cmdtxt2 = "use master restore database " + dbname + " from disk='" + path + "' with replace";
若还有问题,可以参考http://www.cnblogs.com/lileltp/archive/2007/11/04/949213.html
建议你写存储过程啊
1.string path = this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称 ,这里path是路径吗?应该是xxxx.bak吧。
2.楼主确定是在web服务器本地操作的?因为你直接使用了这个path,而不是先保存上传的备份文件再还原。
3.如果是肯定在web服务器本地操作的,那为什么要放到asp.net网站上呢,用dbms不是更好吗?
使用存储过程,直接调用一下就OK。