观看了Insus的视频写下来的,代码可能有点冗长,如有好的想法的,可以多交流。

前台:

<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 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(); }
}

另外附上两个主键:

InsusDateTimeUtility.dll  和  InsusIOUtility.dll

http://115.com/lb/5lbcqlxnjq4b#InsusDateTimeUtility.dll 115网盘礼包码:5lbcqlxnjq4b

复制链接,接受礼包即可。

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

  1. 13-MySQL DBA笔记-迁移、升级、备份、恢复数据库

    第13章 迁移.升级.备份.恢复数据库本章将为读者讲述数据库的各种维护任务:迁移.升级.备份和恢复.因为每个人熟悉的工具不同,其对应的迁移.升级.备份和恢复的方式也都略有不同,本书将尽量对笔者认为最具 ...

  2. 备份、恢复数据库(Dos命令提示符下)_数据库安装工具_连载_1

    Dos命令提示符下: 备份.恢复数据库,是不是很简单啊,是的,当你20年不碰MS SQL,是不是又忘记了呢,答案也许也是吧,^_^虽然在程序中执行SQL代码时,很讨厌那个Go,正如MySQL中那个分号 ...

  3. C#(asp.net)备份还原mssql数据库代码【转】

    采集自互联网,未验证..... 如果我们使用虚拟主机为网站空间,这时如果需要备份和还原msssql数据库是非常麻烦,如果在网站后台管理当中加入对msssql数据库的操纵,可以使我们对数据库的备份和还原 ...

  4. php 备份和恢复数据库

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 【Oracle】增量备份和全库备份怎么恢复数据库

    1差异增量实验示例 1.1差异增量备份 为了演示增量备份的效果,我们在执行一次0级别的备份后,对数据库进行一些改变. 再执行一次1级别的差异增量备份: 执行完1级别的备份后再次对数据库进行更改: 再执 ...

  6. 【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

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

    在SQL2005数据库中利用SQL语句进行数据备份与还原: 备份backup:backup database 数据库名称 tO disk = 备份路径例:BACKUP DATABASE test TO ...

  8. Oracle的常用命令之备份和恢复数据库

    1 将数据库TES完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp system/manager@TEST file=d:\daochu.dmp 2 将数据 ...

  9. 怎么用SQL语句备份和恢复数据库?

    BACKUP DATABASE "mydb" TO DISK ='C:\mybak.db' with init RESTORE DATABASE "mydb" ...

随机推荐

  1. [Objective-c 基础 - 3.1] 内存管理

    A.内存存放.retain.release 1.栈内存:存放局部变量,运行超过变量作用域自后编译器自动回收 2.堆内存:存放对象(地址,对象实体) 3.对象的基本结构 (1)引用计数器(4字节):当计 ...

  2. SMP和MAPP的区别

    SMP(Symmetrical Multi-Processing),对称多处理系统,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构.它是相对非对称多处理技术而言 ...

  3. Linux下修改网卡IP、DNS和网关

    Linux下修改网卡IP和网关 建议通过终端字符方式下来修改 一.修改IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOO ...

  4. mac os升级为 Yosemite 10.10 后不能创建javaproject

    出现这样的情况可能是因为mac系统升级导致JAVA的安装路径发生改变(Xcode升级后也出现模拟器位置改变的情况,不要奇怪) 之前安装的eclipse就自然找不到SDK的路径了,所以会捆绑失败 接下来 ...

  5. Matlab画图-非常具体,非常全面

    Matlab画图 强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本參数就能得到所需图形,这类函数称为高层画图函数. ...

  6. 5分钟 搞定UIButton的文本与图片的布局

    UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目 ...

  7. android报错及解决2--Sdcard进行文件的读写操作报的异常

    报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...

  8. SAP ABAP MARD和MARDH计算逻辑

    mard里记载的是当前库存的数量,但是期间并不一定是当月.比如你物料4月一整月都没有库存数量变化(没收没发),那么5月初你看mard里的条目期间数还是4月而非5月. 当某个期间发生货物移动的时候,系统 ...

  9. android120 zhihuibeijing 开机页面

    软件启动旋转动画: 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

  10. 实例源码--Android日历实例源码

      下载源码   技术要点: 1.Android基础控件的使用 2.Android应用开发基础框架 3.源码带有非常详细的中文 注释 ...... 详细介绍: 1. Android应用开 发技术 此套 ...