时间:2016-02-15 23:35 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET 恢复备份Sqlserver实现代码】,下面是详细的讲解!
ASP.NET 恢复备份Sqlserver实现代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.IO;
using System.Data;
using System.Diagnostics;
namespace SysSourceMgmt
{
public partial class SqlDbMgmt : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
try
{
string SqlStr1="Server=(local);DataBase=master;Uid=sa;Pwd=";
string SqlStr2="Exec sp_helpdb";
SqlConnection con=new SqlConnection(SqlStr1);
con.Open();
SqlCommand com=new SqlCommand(SqlStr2, con);
SqlDataReader dr=com.ExecuteReader();
this.DropDownList1.DataSource=dr;
this.DropDownList1.DataTextField="name";
this.DropDownList1.DataBind();
dr.Close();
con.Close();
SqlStr1="Server=(local);DataBase=master;Uid=sa;Pwd=";
SqlStr2="Exec sp_helpdb";
con=new SqlConnection(SqlStr1);
con.Open();
com=new SqlCommand(SqlStr2, con);
dr=com.ExecuteReader();
this.DropDownList1.DataSource=dr;
this.DropDownList1.DataTextField="name";
this.DropDownList1.DataBind();
dr.Close();
con.Close();
}
catch (Exception)
{
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string dbName=string.Empty;
if (DropDownList1.Items.Count !=0)
{
dbName=DropDownList1.SelectedValue.Trim();
}
else
{
dbName=txtDbName.Text.Trim();
}
string SqlStr1="Data Source=.\\sqlexpress;Initial Catalog='" + dbName + "';Integrated Security=True";
string SqlStr2="backup database " + dbName + " to disk='" + this.TextBox1.Text.Trim() + ".bak'";
SqlConnection con=new SqlConnection(SqlStr1);
con.Open();
try
{
if (File.Exists(this.TextBox1.Text.Trim()))
{
Response.Write("<script language=javascript>alert('此文件已存在,请从新输入!');location='Default.aspx'</script>");
return;
}
SqlCommand com=new SqlCommand(SqlStr2, con);
com.ExecuteNonQuery();
Response.Write("<script language=javascript>alert('备份数据成功!');'</script>");
}
catch (Exception error)
{
Response.Write(error.Message);
Response.Write("<script language=javascript>alert('备份数据失败!')</script>");
}
finally
{
con.Close();
}
}
protected void Button2_Click(object sender, EventArgs e)
{
string path=this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称
string dbName=string.Empty;
if (DropDownList1.Items.Count !=0)
{
dbName=DropDownList1.SelectedValue.Trim();
}
else
{
dbName=txtDbName.Text.Trim();
}
string SqlStr1="Data Source=.\\sqlexpress;Initial Catalog='" + dbName + "';Integrated Security=True";
string SqlStr2=@"use master restore database " + dbName + " from disk='" + path + "'";
SqlConnection con=new SqlConnection(SqlStr1);
con.Open();
try
{
SqlCommand com=new SqlCommand(SqlStr2, con);
com.ExecuteNonQuery();
Response.Write("<script language=javascript>alert('还原数据成功!');'</script>");
}
catch (Exception error)
{
Response.Write(error.Message);
Response.Write("<script language=javascript>alert('还原数据失败!')</script>");
txtDbName.Text=SqlStr2;
}
finally
{
con.Close();
}
}
/// <summary>
/// 恢复数据库,可选择是否可以强制还原(即在其他人在用的时候,依然可以还原)
/// </summary>
/// <param name="databasename">待还原的数据库名称</param>
/// <param name="databasefile">带还原的备份文件的完全路径</param>
/// <param name="errormessage">恢复数据库失败的信息</param>
/// <param name="forceRestore">是否强制还原(恢复),如果为TRUE,则exec killspid '数据库名' 结束此数据库的进程,这样才能还原数据库</param>
/// <returns></returns>
public bool RestoreDataBase(string databasename, string databasefile, ref string returnMessage, bool forceRestore, SqlConnection conn)
{
bool success=true;
string path=databasefile;
string dbname=databasename;
string restoreSql="use master;";
if (forceRestore)//如果强制回复
restoreSql +=string.Format("use master exec killspid '{0}';", databasename);
restoreSql +="restore database @dbname from disk=@path;";
SqlCommand myCommand=new SqlCommand(restoreSql, conn);
myCommand.Parameters.Add("@dbname", SqlDbType.Char);
myCommand.Parameters["@dbname"].Value=dbname;
myCommand.Parameters.Add("@path", SqlDbType.Char);
myCommand.Parameters["@path"].Value=path;
Response.Write(restoreSql);
try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
returnMessage="还原成功";
}
catch (Exception ex)
{
returnMessage=ex.Message;
success=false;
}
finally
{
myCommand.Connection.Close();
}
return success;
}
protected void Button3_Click(object sender, EventArgs e)
{
string path=this.FileUpload1.PostedFile.FileName; //获得备份路径及数据库名称
string dbName=string.Empty;
if (DropDownList1.Items.Count !=0)
{
dbName=DropDownList1.SelectedValue.Trim();
}
else
{
dbName=txtDbName.Text.Trim();
}
string returnMessage=string.Empty;
string SqlStr1="Data Source=.\\sqlexpress;Initial Catalog='" + dbName + "';Integrated Security=True";
SqlConnection con=new SqlConnection(SqlStr1);
RestoreDataBase(txtDbName.Text, path, ref returnMessage, true,con);
Response.Write(returnMessage);
}
}
}
关于ASP.NET 恢复备份Sqlserver实现代码的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 【Visual】分享Visual Studio原生开发的10个调试
- 【全局】.net全局定时定期执行某些操作在Global.a
- 【asp】asp.net ubb使用代码-net-ubb使用
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
