最近写了几个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. FreeBSD 安裝 wget

    cd /usr/ports/ftp/wgetmake install clean pkg_add -r wget就可以把wget安装上去了

  2. Visual Studio 2015 终于还是装上了

    win8.1系统 vs2015.preview_ult_CHT.iso 大小4.46G, http://download.microsoft.com/download/9/9/1/99133C05-3 ...

  3. node18 服务器上 pytorch cyclegan 测试有问题,numpy 版本不对

    提示如下错误: module compiled against API version 0xb but this version of numpy is 0xa 尝试的方法: pip install ...

  4. Windows Azure 入门 -- VS 2015部署 ASP.NET网站(项目) 与 数据库

    Windows Azure 入门 -- 部署 ASP.NET网站(项目) 与数据库 https://www.dotblogs.com.tw/mis2000lab/2015/12/24/windowsa ...

  5. linux 命令——16 which(转)

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  6. win8.1和wp8.1共用代码,需要注意的一些问题

    最近写了一个应有,使用了mvvmlight,把viewmodel.model.common之类的代码都放到了shared共享,写下来才发现,有不少问题是自已下手之前没注意到的,有些地方实在没法中途改了 ...

  7. UVA Live Archive 4394 String painter(区间dp)

    区间dp,两个str一起考虑很难转移. 看了别人题解以后才知道是做两次dp. dp1.str1最坏情况下和str2完全不相同,相当于从空白串开始刷. 对于一个区间,有两种刷法,一起刷,或者分开来刷. ...

  8. 【BZOJ3668】[NOI2014] 起床困难综合症(位运算思想)

    点此看题面 大致题意: 给定一些位运算操作,让你在\(0\sim m\)范围内选一个初始值,使其在经过这些运算后得到的结果最大. 前置技能:关于位运算 作为一道位运算的题,如果你不知道什么是位运算,那 ...

  9. 2017.12.23 第二章 统一建模语言UML概述

    第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...

  10. 方法 -------JavaScript

    本文摘要:http://www.liaoxuefeng.com/ 在一个对象中绑定函数,称为这个对象的方法. 在JavaScript的中,对象的定义是这样的: var xiaoming = { nam ...