windows服务自动备份数据库
最近写了几个windows服务用于自动备份与删除数据:
services代码如下:
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
System.Timers.Timer timer1;
static SqlConnection conn = new SqlConnection();//数据库连接 protected override void OnStart(string[] args)
{
timer1 = new System.Timers.Timer();
timer1.Interval = (0.5*)* * ; //设置计时器事件间隔执行时间
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
timer1.Enabled = true; } protected override void OnStop()
{
this.timer1.Enabled = false;
} private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//执行SQL语句或其他操作 if (DateTime.Now.Hour == || DateTime.Now.Hour == || DateTime.Now.Hour == || DateTime.Now.Hour == || DateTime.Now.Hour == || DateTime.Now.Hour == ||
DateTime.Now.Hour == || DateTime.Now.Hour == )//以上时间才可以备份。可以添加2个timer用于整点保存数据
{
NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
try
{ string logicalname = "BackupTradeDb_" + DateTime.Now.ToString("yyyyMMddhhmmss");
string physicalname = AppDomain.CurrentDomain.BaseDirectory; string path = @"F:\WindowsServes\backupDB\" + DateTime.Now.ToString("yyyyMMdd");//保存备份文件的路径 if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
log.Info("路径为:"+path); physicalname = Path.Combine(path, logicalname + ".bak"); log.Info("开始备份" );
StartBackup(logicalname, physicalname, "NewTradeDB");
}
catch (Exception ex)
{
System.Diagnostics.Debug.Print(ex.ToString()); log.Info(ex.ToString()); } //DateTime date = DateTime.Now.AddDays(-5); //foreach (DirectoryInfo item in directory)
//{ // if (item.Name.Contains(date.ToString("yyyyMMdd")))
// {
// FileInfo[] files = item.GetFiles();
// foreach (FileInfo file in files)
// {
// file.Delete();
// }
// item.Delete();
// }
//} 这个为删除5天前的备份数据
} } private void StartBackup(string logicalname, string physicalname,string dbName)
{
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@devtype",SqlDbType.VarChar,),
new SqlParameter("@logicalname",SqlDbType.VarChar,),
new SqlParameter("@physicalname",SqlDbType.VarChar,)
};
paras[].Value = "disk";
paras[].Value = logicalname;
paras[].Value = physicalname; NLog.Logger log = NLog.LogManager.GetCurrentClassLogger(); int device = ExecuteOtherProc("sp_addumpdevice", paras);//只是添加一个备份设备 log.Info("添加一个备份设备"+device);
string sql_backup =string.Format("backup database {0} to {1} WITH DIFFERENTIAL",dbName,logicalname);
//差异备份 log.Info(sql_backup); int backup = ExecuteSql(sql_backup); log.Info("执行备份语句,影响行数为"+backup); }
public static int ExecuteOtherProc(string procName, params SqlParameter[] paras)
{ NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procName;
cmd.Connection = conn; if (paras != null)
{
cmd.Parameters.AddRange(paras);
}
int flag = ;
try
{
conn.Open();
flag = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{ log.Info(ex.ToString());
}
finally
{
conn.Close();
}
return flag;
}
public static int ExecuteSql(string sql)
{
NLog.Logger log = NLog.LogManager.GetCurrentClassLogger(); int flag = ;
SqlCommand cmd = new SqlCommand(sql, conn); try
{
conn.Open();
flag = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
log.Info(ex.ToString());
}
finally
{
conn.Close();
}
return flag;
} }
windows服务自动备份数据库的更多相关文章
- 在linux和windows下自动备份数据库
摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...
- SQLServer2005利用维护计划自动备份数据库
经常性忘了给数据库备份,结果当数据库发生问题的时候,才发现备份是1个月以前的,那个后悔与懊恼还加惭愧啊,别提有对难受了.要认为的记住去备份比较难,每天事情又那么多,所以有了这个自动备份就不用愁了.先拷 ...
- php每天自动备份数据库
php每天自动备份数据库 windows中如何添加计划任务? 前提:添加windows计划任务,每天打开备份数据库的页面.1.打开http://localhost/thinkphp3.2/index. ...
- Sql Server自动备份数据库,定期删除备份
//实现:每天自动备份数据库,定期删除备份 //步骤:[开始]--[所有程序]--[Microsoft SQL Server 2005]--[SQL Server Management Studio] ...
- SQL Server 定时自动备份数据库
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库,这篇文章介绍使用SQL Server 数据库代理中的作业定时自动备份数据库. 1.启动SQL Server代理服务,如下图: 绿色 ...
- MSSQL Express版本自动备份数据库
由于Express版本的数据库没有自动备份数据库的功能,所以需要自己搭建好备份功能 一.具体原理: 1.利用SQL备份命令:Backup Database 2.使用sqlcmd执行备份命令 3.使用系 ...
- CentOS下使用crontab+mysqldump实现定时自动备份数据库
一 : 为什么要进行数据库的备份? 最主要的原因:尽可能地减少损失,包括时间上.精神上和金钱上的损失.很多人都不注意备份数据,以致在发生问题后丢失大量的重要数据.要知道,在地球上网是很危险的,即使做好 ...
- SQL Server 2008、SQL Server 2008R2 自动备份数据库
让SQL Server 2008自动备份数据库,需要建立一个SQL Server作业,并启动SQL Server代理,使该作业定期运行. 具体来说,可以按以下步骤进行: 一.打开SQL Server ...
- Navicat自动备份数据库
@ 目录 Navicat自动备份数据库 备份与还原 修改备份位置 MySQL:5.7 Navicat:11 Windows10 重要数据库的定时备份是非常重要的,使用Navicat可以非常方便快捷地自 ...
随机推荐
- Android 浮动按钮的伸缩效果
在做项目时想增加点动感,于是就有如下效果: 实现起来也很简单,通过属性动画和recyclerview 滑动结合就很好实现了. 通过给recycleview添加一个滑动监听:通过滚动的差值来处理动画 m ...
- python 之开发工具 sublimetext 3
一.前言 由于个人工作内容太过于繁杂,记忆力又不好,为日后使用的方便,故简单的记录了本篇关于sublimetext 3的初始化安装和部分插件内容的记录.目前最新的版本也是3.0以上版本了,故我这里使用 ...
- RAID0 1 5 10原理、种类及性能优缺点对比
一.RAID模式优缺点的简要介绍 目前被运用较多的RAID模式其优缺点大致是这样的: 1.RAID0模式 优点:在RAID 0状态下,存储数据被分割成两部分,分别存储在两块硬盘上,此时移动硬盘的理论存 ...
- javaweb基础(28)_jstl的核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第七节
第七节:使用下一代CUDA硬件,快乐加速度 原文链接 Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个 ...
- jfinal excel表导出
在自己的WEB项目中要用到导出Excel,所以结合网络上的资源写了一个自己的export 工具类. 说明: JFinal 环境 WEB项目 JAVA后台生成非JS插件 好了,直接撸代码 1.设置文件保 ...
- JS位运算和遍历
JS位运算符 整数 有符号整数:允许使用正数和负数,第32位作为符号位,前31位才是存储位 无符号整数:只允许用正数 如果用n代表位 位数 = 2^n-1 由于位数(1.2.4.8.16...)中只有 ...
- AngularJS最佳实践
1.依赖注入不要用推断式 2.双向绑定的变量设置成$scope下的一个对象的属性 3.多个控制器之间的通信尽量使用service实现,不要使用全局变量或者$rootScope 4.尽量不在控制器中操作 ...
- jrtplib库使用简解
RTP有效载荷类型即时间截解释 =============================== https://www.cnblogs.com/wyqfighting/archive/2013/03/ ...
- BZOJ3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(dp)
题意 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少要有K( ...