mvc项目中实现备份数据库(sqlserver2005)
功能要求: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)的更多相关文章
- 谈谈MVC项目中的缓存功能设计的相关问题
本文收集一些关于项目中为什么需要使用缓存功能,以及怎么使用等,在实际开发中对缓存的设计的考虑 为什么需要讨论缓存呢? 缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源(例如数据 ...
- 在项目中使用SQLite数据库小结
------------------------------------------------------------------------推荐: - VS2012 使用 1.0.84 版的库 - ...
- 转 mvc项目中,解决引用jquery文件后智能提示失效的办法
mvc项目中,解决用Url.Content方法引用jquery文件后智能提示失效的办法 这个标题不知道要怎么写才好, 但是希望文章的内容对大家有帮助. 场景如下: 我们在用开发开发程序的时候,经常 ...
- 在 ASP.NET MVC 项目中使用 WebForm、 HTML
原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...
- MVC项目中如何判断用户是在用什么设备进行访问
使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为 ...
- 在已有的Asp.net MVC项目中引入Taurus.MVC
Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...
- ASP.NET MVC项目中App_Code目录在程序应用
学习ASP.NET MVC,如果你是开发ASP.NET MVC项目的,也许你去为项目添加前ASP.NET项目的APP_Code目录,在这里创建与添加的Class类,也许你无法在MVC项目所引用. 那这 ...
- 在Xamarin.iOS项目中使用预设数据库
在Xamarin.iOS项目中使用预设数据库 当开发者准备好一个预设数据库文件后,就可以将这个数据库文件添加到创建的项目中了.本节将分别在Xamarin.iOS和Xamarin.Android项目中使 ...
- 如何在mvc项目中使用apiController
文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...
随机推荐
- Can't find kernel text map area from kcore
kernel : 4.9.51kexec-tools : 2.0.4 1.~ # ./kexec -p /boot/vmlinuz --initrd=/boot/initrd --command-li ...
- 5月17 AJAX返回类型-------JSON和XML
ajax返回类型有TEXT,JSON,XML 一.TEXT 查看之前的练习 二.JSON var js = { aa:{code:"p001",name:"张三" ...
- 【IDEA】【4】遇到的问题
前言: 1,jar包未导入到项目中 2,报错 cannot resolve symbol 3,左边栏只能看到文件看不到项目结构 4,报错 No valid Maven installation fou ...
- python中lambda的用法
一.lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):return x**2print f(4) Python中使用lambda的话,写成这样 g = l ...
- Leetcode 1014. 在 D 天内送达包裹的能力
1014. 在 D 天内送达包裹的能力 显示英文描述 我的提交返回竞赛 用户通过次数197 用户尝试次数272 通过次数203 提交次数538 题目难度Medium 传送带上的包裹必须在 D 天 ...
- Python3红楼梦人名出现次数统计分析
一.程序说明 本程序流程是读取红楼梦txt文件----使用jieba进行分词----借助Counter读取各人名出现次数并排序----使用matplotlib将结果可视化 这里的统计除了将“熙凤”出现 ...
- Qt动态布局
QVBoxLayout *m_pvLayout = NULL: QWidget *m_pWidgetPlay = NULL: m_pvLayout = new QVBoxLayout(this); m ...
- 把旧系统迁移到.Net Core 2.0 日记 (17) --多租户和SoftDelete
在EF Core 2.0版本中出现了全局过滤新特性即HasQueryFilter,它出现的意义在哪里?能够解决什么问题呢? 通过HasQueryFilter方法来创建过滤器能够允许我们对访问特定数据库 ...
- Guidelines for Writing a Good NIPS Paper
By the NIPS 2006 Program Committee With input from Andrew Ng, Peter Dayan, Daphne Koller, Sebastian ...
- am335x system upgrade uboot sd boot(一)
由于上层应用的需求,需要运行arm docker,在kernel3.2上面还不支持,且编译器的glibc版本比较低的问题,故需要做系统升级 新的内核4.14.40驱动开发和以往有很大的不同,关键在于d ...