功能要求:mvc项目,实现数据库备份(bak文件)

实现步骤:<a id="backupDB" href="javascript:" >数据库备份</a>

方法:1、新建类DatabaseMaintenance

    /// <summary>
/// 数据库维护
/// </summary>
public class DatabaseMaintenance
{
/// <summary>
/// 备份数据库
/// </summary>
/// <param name="fileName">备份文件的路径</param>
public static void Backup(string fileName)
{
//TODO SQL Server only now
string sqlConnectionString = ConfigurationManager.ConnectionStrings["HelpStoreContext"].ToString();
using (SqlConnection conn = new SqlConnection(sqlConnectionString))
{
string dbName = new SqlConnectionStringBuilder(sqlConnectionString).InitialCatalog; string commandText = string.Format(
"BACKUP DATABASE [{0}] TO DISK = '{1}' WITH FORMAT",
dbName,
fileName); DbCommand dbCommand = new SqlCommand(commandText, conn);
if (conn.State != ConnectionState.Open)
conn.Open();
dbCommand.ExecuteNonQuery();
}
} /// <summary>
/// 还原数据库 database
/// </summary>
/// <param name="fileName">要还原的数据库文件路径</param>
public static void RestoreBackup(string fileName)
{
string sqlConnectionString = ConfigurationManager.AppSettings["HelpStoreContext"];
using (SqlConnection conn = new SqlConnection(sqlConnectionString))
{
string dbName = new SqlConnectionStringBuilder(sqlConnectionString).InitialCatalog;
string commandText = string.Format(
"DECLARE @ErrorMessage NVARCHAR(4000)\n" +
"ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE\n" +
"BEGIN TRY\n" +
"RESTORE DATABASE [{0}] FROM DISK = '{1}' WITH REPLACE\n" +
"END TRY\n" +
"BEGIN CATCH\n" +
"SET @ErrorMessage = ERROR_MESSAGE()\n" +
"END CATCH\n" +
"ALTER DATABASE [{0}] SET MULTI_USER WITH ROLLBACK IMMEDIATE\n" +
"IF (@ErrorMessage is not NULL)\n" +
"BEGIN\n" +
"RAISERROR (@ErrorMessage, 16, 1)\n" +
"END",
dbName,
fileName); DbCommand dbCommand = new SqlCommand(commandText, conn);
if (conn.State != ConnectionState.Open)
conn.Open();
dbCommand.ExecuteNonQuery();
} //clear all pools
SqlConnection.ClearAllPools();
}
}

2、在控制器里调用方法

       //备份数据库
public string BackupData()
{
try
{
var dname = DateTime.Now.Ticks;
string filename = Server.MapPath("~/Data/" + dname + ".bak");
if (!System.IO.File.Exists(filename))
{
System.IO.File.Create(filename);
}
DatabaseMaintenance.Backup(filename);
return "备份成功";
}
catch
{
return "备份失败";
}
}

3、删除已经备份的数据库bak文件

      //删除数据库备份文件
public string DelDataBase(string id)
{
try
{
string filepath=Server.MapPath("~/Data/"+id);
System.IO.File.Delete(filepath);
return "删除成功";
}
catch {
return "删除失败";
}
}

mvc项目中实现备份数据库(sqlserver2005)的更多相关文章

  1. 谈谈MVC项目中的缓存功能设计的相关问题

    本文收集一些关于项目中为什么需要使用缓存功能,以及怎么使用等,在实际开发中对缓存的设计的考虑 为什么需要讨论缓存呢? 缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源(例如数据 ...

  2. 在项目中使用SQLite数据库小结

    ------------------------------------------------------------------------推荐: - VS2012 使用 1.0.84 版的库 - ...

  3. 转 mvc项目中,解决引用jquery文件后智能提示失效的办法

    mvc项目中,解决用Url.Content方法引用jquery文件后智能提示失效的办法   这个标题不知道要怎么写才好, 但是希望文章的内容对大家有帮助. 场景如下: 我们在用开发开发程序的时候,经常 ...

  4. 在 ASP.NET MVC 项目中使用 WebForm、 HTML

    原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...

  5. MVC项目中如何判断用户是在用什么设备进行访问

    使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为 ...

  6. 在已有的Asp.net MVC项目中引入Taurus.MVC

    Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...

  7. ASP.NET MVC项目中App_Code目录在程序应用

    学习ASP.NET MVC,如果你是开发ASP.NET MVC项目的,也许你去为项目添加前ASP.NET项目的APP_Code目录,在这里创建与添加的Class类,也许你无法在MVC项目所引用. 那这 ...

  8. 在Xamarin.iOS项目中使用预设数据库

    在Xamarin.iOS项目中使用预设数据库 当开发者准备好一个预设数据库文件后,就可以将这个数据库文件添加到创建的项目中了.本节将分别在Xamarin.iOS和Xamarin.Android项目中使 ...

  9. 如何在mvc项目中使用apiController

    文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...

随机推荐

  1. 20180429 xlVBA套打单据自适应列宽

    Sub TestAutoAdjustColumnWidthBaseOnModel() Set ModelSheet = ThisWorkbook.Worksheets("单据模板" ...

  2. C#方式操作Cookie

    1.设置cookie public static void SetCookie(string TokenValue) { HttpCookie tokencookie = new HttpCookie ...

  3. 虚拟机linux 如何挂在U盘,NTFS格式如何挂载

    今天突发奇想,想挂载U盘到虚拟机的Centos 7 上,但是出了些问题,下边我就来说下linux挂在U盘的步骤 电脑插上U盘 win + R运行 services.msc 找到虚拟机的USB服务并运行 ...

  4. 最长回文字串——manacher算法

    时间复杂度:O(n) 参考:https://segmentfault.com/a/1190000003914228 1.问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一个字 ...

  5. http bass

    1.http 是超文本传输协议,是从万维网服务器传输超文本到本地浏览器的传输协议 2.http是一个基于tcp/ip通信协议来传输数据(html,图片,查询结果等) 3.一个完整的http请求包含7个 ...

  6. python基础之字典以及增删改查

    字典:字典是python中唯一的一个映射类型,主要形式为 dic = {key1:value,key2:value2,....} 字典中key的值是唯一的,主要关系到HASH算法,并且key的值必须是 ...

  7. 21. Merge Two Sorted Lists (Java 合并有序链表 空间复杂度O(1))

    题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...

  8. loj#2020. 「AHOI / HNOI2017」礼物

    题意:给定xy数组求 \(\sum_{i=0}^{n-1}(x_i+y_{(i+k)\modn}+c)^2\) 题解:先化简可得 \(n*c^2+2*\sum_{i=0}^{n-1}x_i-y_i+\ ...

  9. spring boot(十六)使用Jenkins部署spring boot

    jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署分为三个步骤: 第一步,jenkins安装 第二步,插件安装和配置 第 ...

  10. PAT 1013 Battle Over Cities

    1013 Battle Over Cities (25 分)   It is vitally important to have all the cities connected by highway ...