最近写了几个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*60)* 60 * 1000;  //设置计时器事件间隔执行时间
                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 == 1 || DateTime.Now.Hour == 07 || DateTime.Now.Hour == 11 || DateTime.Now.Hour == 15 || DateTime.Now.Hour == 19 || DateTime.Now.Hour == 20 ||
                DateTime.Now.Hour == 21 || DateTime.Now.Hour == 22)//以上时间才可以备份。可以添加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,20),
                    new SqlParameter("@logicalname",SqlDbType.VarChar,256),
                    new SqlParameter("@physicalname",SqlDbType.VarChar,520)
                };
            paras[0].Value = "disk";
            paras[1].Value = logicalname;
            paras[2].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 = 0;
            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 = 0;
            SqlCommand cmd = new SqlCommand(sql, conn);

            try
            {
                conn.Open();
                flag = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                log.Info(ex.ToString());
            }
            finally
            {
                conn.Close();
            }
            return flag;
        }

    }

 

posted @ 2014-01-10 12:04 青丝慕雪 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 简介微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。对于成功接入消息接口的微信公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的。申请消息接口点击申请,填写网址url和token,其中token可由开发者可以任意填写,用作生成签名。网址接入公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:参数描述signature微信加密签名timestamp时间戳nonce随机数echostr随机字符串开 阅读全文
posted @ 2014-01-10 11:55 青丝慕雪 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 完全备份declare @device varchar(255),@path varchar(255),@dbname varchar(255)set @dbname='MIS_TEMP'set @path='D:\project\eosserver\MIS_TEMP\Data\Backup\'set @device=@path+@dbname+'_COMP_'+ convert(char(8),getdate(),112)+replace(convert(char(9),getdate(),114),':','' 阅读全文
posted @ 2013-12-23 10:14 青丝慕雪 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 到C盘下找到对应的开发VS的installutil.exe文件,复制到程序的执行文件(*.exe)相同目录下在开始程序中找到VS命令提示工具转到程序的执行文件(*.exe)目录下C:\>cd C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\SaleDataConn\SaleDataCon\bin\Debug-------------------------------------------------------------------------------------- 阅读全文
posted @ 2013-12-10 16:45 青丝慕雪 阅读(1651) 评论(0) 推荐(0) 编辑
摘要: 这个为通用过滤关键字的函数,若有其他关键字未添加可以参考语法加入。USE [Db]GO/****** Object: UserDefinedFunction [dbo].[f_FilterString] Script Date: 12/09/2013 17:03:45 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO CREATE function [dbo].[f_FilterString] --通用函数。过滤关键字(@SqlString nvarchar(1000))--参数为需要过滤的参数returns nvarchar(... 阅读全文
posted @ 2013-12-09 17:12 青丝慕雪 阅读(682) 评论(4) 推荐(0) 编辑
摘要: 最近事情有点多。转些有用的资源储备一下。下面是代码:页面代码:回放目标轨迹正在加载数据,请耐心等待....... 武汉的士 从: 到: 频 率: 秒 主要js:playback.js-v=1.0.1.1// JavaScript Documentvar map = "";var _isBMap_ = typeof BMap !== "undefined";var PlayBack = function(mapId,user_id,productType,sudu, url){ this.container = mapId; this... 阅读全文
posted @ 2013-12-04 15:39 青丝慕雪 阅读(4347) 评论(0) 推荐(0) 编辑
摘要: 淘宝应对双"11"的技术架构分析 双“11”最热门的话题是TB,最近正好和阿里的一个朋友聊淘宝的技术架构,发现很多有意思的地方,分享一下他们的解析资料:淘宝海量数据产品技术架构数据产品的一个最大特点是数据的非实时写入,正因为如此,我们可以认为,在一定的时间段内,整个系统的数据是只读的。这为我们设计缓存奠定了非常重要的基础。图1淘宝海量数据产品技术架构按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层(如图1所示),分别是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户、店铺、商品和交易等数据库,还有用户的浏览、搜索等行为 阅读全文
posted @ 2013-11-25 14:54 青丝慕雪 阅读(345) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示