功能要求: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. sgu 203 Hyperhuffman

    题意:给出字符出现的次数,问替换成哈夫曼编码后的文本长度. 实际上观察发现就等于树的所有节点的和.用nlogn超时.用O(n),用两个队列,一个放原始数组,一个放新生成的节点. #include &l ...

  2. Spring Batch JSR-305 支持

    本发布版本中为 JSR-305 支持添加了一个注解.这个为了与 Spring 框架中的  Null-safety 注解取得平衡,然后为 Spring Batch 添加为 public APIs. 这个 ...

  3. linux基础3

    vim编辑器 vim 操作命令 在命令模式下操作 pageup 往上翻页(重要指数****) pagedown 往下翻页(重要指数****) H 移动到屏幕首行 gg 移动光标到文档的首行(重要指数* ...

  4. implode

    $names = implode('|', array_column($categoryBackNameArr, 'name'));

  5. Quartz理解与实现

    记录关于Quartz定时调度任务的知识点,知识点主要分为两个部分,第一个部分介绍Quartz,第二部分使用Quartz+Spring来配置使用Quartz的实际操作. (一)Quartz知识点 Qua ...

  6. springBoot配置,贴个图

    spring: datasource: name: test url: jdbc:mysql://localhost:3306/epay?characterEncoding=UTF-8 usernam ...

  7. 安卓——Activity生命周期

      在xml 设计页面添加标签 xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  8. python 常用代码

    获取标签名 h1 class 是h1usersoup.find(name="h1", attrs={"class":"h1user"});获 ...

  9. 338. Counting Bits_比特位计数_简单动态规划

    https://leetcode.com/problems/counting-bits/ 这是初步了解动态规划后做的第一道题,体验还不错... 看完题目要求后,写出前10个数的二进制数,发现了以下规律 ...

  10. flask-后台布局页面搭建4

    1.  搭建后台页面 5.1管理员登录 步骤:1.在admin视图中导入from flask import render_template,redirect,url_for.并写入一下代码. #登录 ...