asp.net备份和恢复数据库

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

前台:

[flash=500,400]http://s1.knowsky.com/20160211/alhbnsf10dv26.gif[/flash]

<form id="form1" runat="server">

<div>

<asp:Button ID="Button1" runat="server" Text="备份数据库" OnClick="Button1_Click" />

<asp:Label ID="Label1" runat="server" Text=""></asp:Label>

<asp:Label ID="Label2" runat="server" Text=""></asp:Label>

<asp:GridView ID="gv_DataBasefile" runat="server" AutoGenerateColumns="False" Width="100%"

OnRowCommand="gv_DataBasefile_RowCommand">

<RowStyle HorizontalAlign="center" />

<Columns>

<asp:TemplateField HeaderText="文件名">

<ItemTemplate>

<%#Eval("Name") %>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="创建时间">

<ItemTemplate>

<%# objIdtu.GetDateTime( Eval("CreationTime"),"yyyy-MM-dd HH:mm:ss")%>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="修改时间">

<ItemTemplate>

<%# objIdtu.GetDateTime(Eval("LastWriteTime"), "yyyy-MM-dd HH:mm:ss")%>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="路径">

<ItemTemplate>

<%# Eval("DirectoryName")%>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="还原">

<ItemTemplate>

<%--CommandArgument 传递两个数据 Name,DirectoryName--%>

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="../images/x1root.gif"

CommandArgument='<%# Eval("Name")+","+Eval("DirectoryName")%>' />

</ItemTemplate>

</asp:TemplateField>

</Columns>

</asp:GridView>

</div>

</form>

[flash=500,400]http://s1.knowsky.com/20160211/alhbnsf10dv26.gif[/flash]

后台:

[flash=500,400]http://s1.knowsky.com/20160211/alhbnsf10dv26.gif[/flash]

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using HanSoft.BusinessLogic;

using Insus.NET;

using CAF.DBUtility;

using System.IO;

using System.Data;

using System.Data.SqlClient;

using System.Collections;

using HanSoft.SQLServerDAL;

public partial class information_backDB : System.Web.UI.Page

{PRotected InsusDateTimeUtility objIdtu = new InsusDateTimeUtility();

InsusIOUtility objIotu = new InsusIOUtility();

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

Data_Binding();

}

}

private void Data_Binding()

{

DirectoryInfo dInfo = new DirectoryInfo(Server.MapPath("~/backSql"));

this.gv_DataBasefile.DataSource = dInfo.GetFiles();

this.gv_DataBasefile.DataBind();

}

/// <summary>

/// 备份数据库

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void Button1_Click(object sender, EventArgs e)

{

try

{

BACKUP();

Label1.Text = "数据库备份成功!";

Data_Binding();

}

catch (Exception ex)

{

Response.Write(ex.Message);

}

}

/// <summary>

/// 备份数据库方法

/// </summary>

private void BACKUP()

{

string DBname = "1220";

string backUpDBname = DBname + "_" + objIdtu.GetDateTimeMillisecond();//这一步是数据库名+年月日+随机数

objIotu.MakeDirectory(Server.MapPath("~/backSql")); //这一步是在根目录下面生成一个文件夹,名叫 backsql

string str_sql = " BACKUP DATABASE [" + DBname + "] TO DISK = '" + Server.MapPath("~/").ToString() + "backSql\\" + backUpDBname + ".bak'";

int i = SqlHelper.ExecuteNonQuery(str_sql);

}

/// <summary>

/// 还原数据库

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void gv_DataBasefile_RowCommand(object sender, GridViewCommandEventArgs e)

{

SelectObjectIndexBLL SoIndexBLL = new SelectObjectIndexBLL();

SqlConnection connection = new SqlConnection("Data Source=192.168.1.98;User ID=sa;PassWord=123");

string path_name = e.CommandArgument.ToString();

string[] array = { };

string[] array1 = { };

array = path_name.Split(',');

string dbFileName = array[1].ToString();

array1 = array[0].ToString().Split('_');

string dbName = array1[0].ToString();

SqlCommand command = new SqlCommand("use master;restore database @name from disk=@path WITH REPLACE;", connection);

string path = dbFileName + "//" + array[0]; //全路径

command.Parameters.AddWithValue("@name", dbName); //dbName还原目标数据库名

command.Parameters.AddWithValue("@path", path);

DataTable dt_spid = SoIndexBLL.GetDataList(" select spid from master..sysprocesses where dbid=db_id('1220') ").Tables[0];

if (dt_spid.Rows.Count > 0)

{

for (int i = 0; i < dt_spid.Rows.Count; i++)

{

string sql = " kill " + Convert.ToString(dt_spid.Rows[i]["spid"]) + " ";

//SqlDataAdapter sqldap = new SqlDataAdapter(sql, connection);//--------------1

SqlCommand commd = new SqlCommand(sql, connection);//----------2

connection.Open();

commd.ExecuteReader();//-------------2

connection.Close();

} Label2.Text = " 数据库恢复成功! ";

}

connection.Open();

command.ExecuteNonQuery();//-----------------1

connection.Close();

}

}

[flash=500,400]http://s1.knowsky.com/20160211/alhbnsf10dv26.gif[/flash]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航