最近写了几个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服务自动备份数据库的更多相关文章

  1. 在linux和windows下自动备份数据库

    摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...

  2. SQLServer2005利用维护计划自动备份数据库

    经常性忘了给数据库备份,结果当数据库发生问题的时候,才发现备份是1个月以前的,那个后悔与懊恼还加惭愧啊,别提有对难受了.要认为的记住去备份比较难,每天事情又那么多,所以有了这个自动备份就不用愁了.先拷 ...

  3. php每天自动备份数据库

    php每天自动备份数据库 windows中如何添加计划任务? 前提:添加windows计划任务,每天打开备份数据库的页面.1.打开http://localhost/thinkphp3.2/index. ...

  4. Sql Server自动备份数据库,定期删除备份

    //实现:每天自动备份数据库,定期删除备份 //步骤:[开始]--[所有程序]--[Microsoft SQL Server 2005]--[SQL Server Management Studio] ...

  5. SQL Server 定时自动备份数据库

    在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库,这篇文章介绍使用SQL Server 数据库代理中的作业定时自动备份数据库. 1.启动SQL Server代理服务,如下图: 绿色 ...

  6. MSSQL Express版本自动备份数据库

    由于Express版本的数据库没有自动备份数据库的功能,所以需要自己搭建好备份功能 一.具体原理: 1.利用SQL备份命令:Backup Database 2.使用sqlcmd执行备份命令 3.使用系 ...

  7. CentOS下使用crontab+mysqldump实现定时自动备份数据库

    一 : 为什么要进行数据库的备份? 最主要的原因:尽可能地减少损失,包括时间上.精神上和金钱上的损失.很多人都不注意备份数据,以致在发生问题后丢失大量的重要数据.要知道,在地球上网是很危险的,即使做好 ...

  8. SQL Server 2008、SQL Server 2008R2 自动备份数据库

    让SQL Server 2008自动备份数据库,需要建立一个SQL Server作业,并启动SQL Server代理,使该作业定期运行. 具体来说,可以按以下步骤进行: 一.打开SQL Server ...

  9. Navicat自动备份数据库

    @ 目录 Navicat自动备份数据库 备份与还原 修改备份位置 MySQL:5.7 Navicat:11 Windows10 重要数据库的定时备份是非常重要的,使用Navicat可以非常方便快捷地自 ...

随机推荐

  1. oracle 查询之前的表数据

    SELECT * FROM Student  AS OF TIMESTAMP SYSDATE - 3/1440 对SQL的解释说明: SYSDATE :当前时间 1440 :24h*60m=1440m ...

  2. 怎么旋转PDF文件的方向并保存成功

    http://jingyan.baidu.com/article/59a015e39d7802f79488651e.html PDF格式的文档是非常普遍的一种阅读电子书格式,基本上非常好用了,不过有时 ...

  3. 数据类型 -- uint32_t 类型

    整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型 ...

  4. hihocoder 1093 SPFA算法

    题目链接:http://hihocoder.com/problemset/problem/1093 , 最短路的SPFA算法. 由于点的限制(10w),只能用邻接表.今天也学了一种邻接表的写法,感觉挺 ...

  5. linux 命令——6 rmdir(转)

    今天学习一下linux中命令: rmdir命令.rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删 ...

  6. 【BZOJ1045】糖果传递(基于贪心的数学题)

    点此看题面 大致题意: 有\(n\)个小朋友坐成一圈,每人有\(a[i]\)个糖果.每人只能给左右两人传递糖果,传递一个糖果代价为1,求使所有人获得均等糖果的最小代价. 数学转换 这题其实是一道带有浓 ...

  7. 设置meta标签 清除页面缓存,如:<meta http-equiv="Cache-Control" content="no-cache"/>

    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" ...

  8. HP刀片服务器安装系统步骤

    原文链接 HP刀片服务器安装系统步骤: HP刀片使用一个叫OA(Onboard Administrator)的管理平台统一进行管理,具有很高的集成性,同时使用起来也很简单方便,通过IE浏览器输入IP地 ...

  9. dom事件操作例题,电子时钟,验证码,随机事件

    dom事件操作 当事件发生时,可以执行js 例子: 当用户点击时,会改变<h1>的内容: <h1 onClick="this.innerHTML='文本更换'"& ...

  10. caller、callee的用法及区别

    1 :caller 返回一个调用当前函数的引用 如果是由顶层调用的话 则返回null (举个栗子哈 caller给你打电话的人  谁给你打电话了 谁调用了你 很显然是下面a函数的执行 只有在打电话的时 ...