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可以非常方便快捷地自 ...
随机推荐
- iis6.0 建立站点
公司网站的服务器甚多 其中还包括早期的iis6.0 的网站服务器 由于之前没有接触过 特此记录建立站点过程和注意事项 1.每个站点最好都新建一个用户名 方便管理 这里操作系统是 winXP 现在运行界 ...
- PHP函数:method_exists和function_exists
method_exists 检查类的方法是否存在 bool method_exists ( mixed $object , string $method_name ) 检查类的方法是否存在于指定的ob ...
- CentOS服务器初始化设置
CentOS服务器初始化设置 以阿里云服务器为例 一.挂载硬盘 1.磁盘分区 fdisk -l #查看设备,一般可以看到设备名为/dev/xvdb,或者为/dev/vdb(阿里云io优化型) fdis ...
- C++,C++编程,Windows编程,MFC
编程 我们日常生活中接触到的电子类产品中的应用都是由编程而来 为什么编程,偷懒 我们通过编程驱使(指挥,命令)的是电信号 为什么上面说编程是偷懒,电的发现,给人们带来了便利,人们在各个方面驱使(换成“ ...
- V2EX 神回复 #1
"抠图"用英文怎么说 今天突然被"抠图"这个单词给难住了," image segmentation "," image cut & ...
- Problem A: 李白打酒
Problem A: 李白打酒 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 825 Solved: 373[Submit][Status][Web ...
- Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像(克隆和导入)
Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像: 注:直接复制一个.vdi 虚拟硬盘再挂上去就可以,但Virtualbox居然提示UUID重复,无法使用. 则,可以通过 ...
- C#获取Honeywell voyager 1400g扫码后的数据
一.在类方法中加入 System.IO.Ports.SerialPort com;二.在构造方法中加入 try { com = new System.IO.Ports.SerialPort(&qu ...
- vs2015“当前不会命中断点 还没有为该文档加载任何符号”的解决方法
解决方法:工具-选项-调试 -(启用“仅我的代码”)勾去掉
- day1总结
print("hello world") name='王维是傻屌' print(name) age_of_王维是傻屌 = 18 # type:用于判断变量的类型 str1 ='he ...