你的位置:首页 > 软件开发 > ASP.net > 使用程序备份服务器端数据库文件和其他文件一

使用程序备份服务器端数据库文件和其他文件一

发布时间:2009-12-13 13:43:00
1.前言:存放在服务器上的数据(包括网站的页面、图片,数据库文件等),对于网络管理员来说,必须得经常定期备份。可能大部分人都会登录到服务器,对数据库进行备份操作,对图片文件等进行压缩,再将备份文件等传到本地。总是要登录备份文件觉得挺麻烦,所以就想用程序来实现备份 。当前我用的数据库是sql server2000,备份的文件是网站的图片。欢迎大家交流,有不当之处,请及时指出,请联系ntshenwh@

1.前言:
存放在服务器上的数据(包括网站的页面、图片,数据库文件等),对于网络管理员来说,必须得经常定期备份。可能大部分人都会登录到服务器,对数据库进行备份操作,对图片文件等进行压缩,再将备份文件等传到本地。总是要登录备份文件觉得挺麻烦,所以就想用程序来实现备份 。当前我用的数据库是sql server2000,备份的文件是网站的图片。
欢迎大家交流,有不当之处,请及时指出,请联系ntshenwh@gmail.com

2.实现原理:
  服务器端运行一个不间断的程序,负责数据库备份和图片备份操作,它会定期检查一个备份信息表,查看是否有需要备份的文件。如果有,则立即对相应要备份的文件进行备份。
 

3.数据库结构:
 表:
 CREATE TABLE [dbo].[TBackup] (
 [PKID] [int] IDENTITY (1, 1) NOT NULL ,
 [Name] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  --备份名称
 [CreatedDate] [datetime] NULL ,             --创建时间
 [Type] [tinyint] NULL ,                 --备份类型,1 备份文件 2 备份数据库
 [Status] [tinyint] NULL ,                --备份状态  1 等待备份 2 备份中  3 备份完成 4 备份失败
 [DBName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , --数据库名称
 [SourceFile] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL , --备份源文件
 [DestFile] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  --目标文件名(不包括后缀名,如 bak2007 )
 [DestFolder] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  --目标文件夹(如c:\aa\)
 [UsedTime] [float] NULL ,                                  --耗时
 [DLPath] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  --下载路径
 [CreatedUser] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL  --创建者
) ON [PRIMARY]
 
 存储过程:
  插入记录
 CREATE  Proc P_AddBackup
(
    @Name varchar(100),
    @Type tinyint,
    @DBName varchar(50),
    @SourceFile varchar(100),
    @DestFile varchar(100),
    @DestFolder varchar(100), 
    @CreatedUser varchar(50),
    @PKID int output
)
as
begin
 Insert into TBackup(Name,Type,Status,DBName,SourceFile,DestFile,DestFolder,UsedTime,DLPath,CreatedUser)
 values(@Name,@Type,1,@DBName,@SourceFile,@DestFile,@DestFolder,0,'''',@CreatedUser)
 set @PKID =@@identity
end

 

 更改记录
CREATE   Proc P_UpdateBackup
(
    @PKID int,
    @Status tinyint,
    @UsedTime float,
    @DLPath varchar(100),
    @rv int output
)
as
begin
 
 Update TBackup
 set Status=@Status,
     UsedTime = @UsedTime,
     DLPath = @DLPath
 Where PKID = @PKID

 set @rv =@@rowcount
end


4.实现代码:
 服务器端是一个控制台程序,在VS.2005环境下编写.
 其中用到了几个类:
 CBackup.cs    实体类,作为信息的载体。
 CThread.cs    主要get='_blank'>线程类,由它进行不间断扫描程序,其中备份操作也是在该类中调用的。
 DBHelper.cs   数据库操作类,用来获取备份信息及更改备份信息。
 ZipHelper.cs  用来压缩备份文件。
 Common.cs     通用类,存放静态变量及记录日志。
 Program.cs    main()函数所在类,从main开始。

 
 注意的是在Common.cs中事先设定好数据库连接字符串及备份文件下载路径。

5.使用案例:
  进行本地测试
  5.1 在本地数据库pubs下,建立表及存储过程
  5.2 运行控制台程序
  5.3 调用 P_AddBackup 插入一条记录
  5.4 查看运行效果

6.使用建议:
  6.1 该备份方法 适合web服务,数据库服务集成在一个服务器上.
  6.2 将控制台程序放到服务器端运行.同时建一个web页面放到服务器上,该页面用来维护TBackup信息表.
  6.3 在备份数据库文件时,请注意,每次备份的目标文件名不能重复,否则备份出错.

 

 Common.cs

 

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace BackupTool
...{
    /**//// <summary>
    /// 通用类,定义常量,公共方法
    /// </summary>
    class Common
    ...{
        常量#region 常量

        //数据库连接
        public static string CON_CONNSTR = "Server=.;DataBase=pubs;uid=sa;pwd=;Max Pool Size=512;";       

        //备份文件下载
        public static string CON_DOWNLOAD_PATH = "http://www.xyz.com/download/";       

        //日志路径
        public static string LogPath = @"C:BackupToollog.txt";
        public static string LogPathFloder = @"C:BackupTool";
        #endregion

        /**//// <summary>
        /// 写入日志信息
        /// </summary>
        /// <param name="msg">信息</param>
        public static void WriteLog(string msg)
        ...{

            if (!Directory.Exists(LogPathFloder))
                Directory.CreateDirectory(LogPathFloder);
            if (!File.Exists(LogPath))
                File.Create(LogPath);

            try
            ...{
                using (StreamWriter sw = File.AppendText(LogPath))
                ...{
                    sw.WriteLine("[" + System.DateTime.Now.ToString() + "] " + "" + msg + " ");
                }
            }
            catch (Exception ex)
            ...{ }
            finally
            ...{ }

        }

        /**//// <summary>
        /// 写入异常信息
        /// </summary>
        /// <param name="msg">信息</param>
        public static void WriteLog(Exception exsource)
        ...{

            string msg = "异常信息:" + exsource.Message + " " + "异常明细:" + exsource.StackTrace;

            if (!Directory.Exists(LogPathFloder))
                Directory.CreateDirectory(LogPathFloder);
            if (!File.Exists(LogPath))
                File.Create(LogPath);

            try
            ...{
                using (StreamWriter sw = File.AppendText(LogPath))
                ...{
                    sw.WriteLine("[" + System.DateTime.Now.ToString() + "] " + "" + msg + " ");
                }
            }
            catch (Exception ex)
            ...{ }
            finally
            ...{ }

        }

    }
}
 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:使用程序备份服务器端数据库文件和其他文件一

关键词:数据库

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。