asp.net 备份和恢复数据库

前台:

<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>

后台:

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 [email protected] 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();

    }
}

时间: 2025-01-07 13:38:32

asp.net 备份和恢复数据库的相关文章

6.6笔记-数据库的 事务、视图、索引、备份、恢复数据库

一.事务 事务(TRANSACTION)是作为 单个逻辑工作单元执行的一系列操作 事务的四个特性 原子性 一致性 持久性 隔离性 开启事务 begin; 或 START TRANSACTION 提交事务 commit 回滚事务 rollback mysql 是默认开启事务自动提交(oracle 默认不开启事务自动提交) 二.视图 一张虚拟表 一张表可以创建多个不同的视图 创建视图 create view 视图名 as select ... 删除视图 drop view 视图名 三.索引 是一种有

备份和恢复数据库

查看实例编号,名称和日志模式:SYS AS [email protected]>select dbid,name,log_mode from v$database; DBID NAME      LOG_MODE---------- --------- ------------1391294860 ORCL      ARCHIVELOG 1 row selected. RMAN:    登录:    [[email protected] ~]$ rman    RMAN> CONNECT T

使用MySQL命令行备份及恢复数据库

使用MySQL命令行,可以实现对数据库的备份以及恢复,下面就为您介绍使用MySQL命令行实现该功能的详细方法步骤,供您参考. MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin(或者直接将windows的环境变量path中添加该目录) 2,导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 如我输入的命令

SQL2005中使用backup、restore来备份和恢复数据库

在SQL2005数据库中利用SQL语句进行数据备份与还原: 备份backup:backup database 数据库名称 tO disk = 备份路径例:BACKUP DATABASE test TO disk = 'd:\bak\test.bak' 恢复restore:restore  database 数据库名称from disk = 备份路径例:RESTORE DATABASE test FROM disk = 'd:\bak\test.bak'

备份,恢复数据库

<?phpclass dbBackup {    public $host='127.0.0.1';    //数据库地址    public $user='root';    //登录名    public $pwd='root';    //密码    public $database;    //数据库名    public $charset='utf8';    //数据库连接编码:mysql_set_charset    //连接数据库    function db() {      

RMAN-catalog备份及恢复数据库

1.Set Up a Recovery Catalog and Target DatabaseSetting up a recovery catalog is a very simple process. This can be done through the Enterprise Manager GUI or through some simple commands in SQL*Plus and the RMAN command-line interface. In SQL*Plus, a

MySQL数据库-完全备份及恢复

MySQL数据库-完全备份及恢复 数据库备份的分类 物理角度: 冷备份:也称脱机备份,特点:关掉数据库再备份 热备份:也称联机备份,特点:开启数据库再备份 温备份:数据库只有可读权限的状态下备份 逻辑角度: 对数据库的对象的备份,例如数据表,及数据表中的一些sql语句等 备份策略角度: 完全备份:每次对数据进行整体的备份 差异备份:在第一次完整备份a数据后,以后的每次的备份是a+b,b就是针对于a数据发生变化的数据,称之为'差异数据'.缺点:b的数据内存会越来越大b+=b,导致数据恢复缓慢.恢复

SQL 数据库备份和恢复 镜像配置(证书方式)

最近公司在进行数据库容灾和备份上的工作,记录关于镜像配置的总结 步骤一:备份和恢复数据库 -- 以完整和事务日志备份主数据库 -- 从服务器上先后还原完整备份和事务日志备份,注意选择不对数据库执行任何操作(WITH NORECOVERY) 步骤二:主服务器A配置证书 -- 创建主密钥 CREATE master KEY ENCRYPTION BY password = 'PASSWORDA' ; GO -- 创建证书 CREATE CERTIFICATE Cert_A WITH subject

Mysql启停以及恢复备份恢复数据库

1.mysql启停 进入cmd 输入如下命令 net stop mysql(自己起的mysql名称) -------停 net strat mysql   --------------------------起 2.备份及恢复数据库 我只采用备份C:\ProgramData\MySQL\MySQL Server 5.1\data路径下的数据库文件夹(例如worktime) 备份脚本如下: color 0A --设置颜色title 工时管理数据库备份(请不要关闭,你可以最小化)!@echo off