文档章节

C# 编写的SqlServer 数据库自动备份服务,带配置,功能强大

o
 osc_pn11u1x9
发布于 2018/08/06 09:48
字数 717
阅读 9
收藏 0

数据库自动备份服务,带配置,还算可以吧

周末抽时间,编写了一个这样的工具,可以让,对数据库不了解或不熟悉的人,直接学会使用备份,省时省力,同样,我也将一份,通过脚本进行备份的,也奉献上来,

  1. 通过sql脚本进行数据库备份

通过脚本备份数据库,同样也支持压缩,但是需要安装winrar来实现,整体来说也还行,在服务器上创建一个 维护计划,就可以实现,也是很方便的,脚本如下:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
declare @prefix         nvarchar(100),
        @datefile       nvarchar(100),
        @bakfile        nvarchar(100),
        @rarfile        nvarchar(100),
        @rarcmd         nvarchar(150),
        @str_date       nvarchar(100),
        @sql            nvarchar(100)
        
--设置备份的目录      
set @prefix='D:/DataBase/' 
set @str_date = replace(replace(replace(convert(varchar(20),getdate(), 120),' ',''),'-',''),':','')
set @datefile = 'xx' +@str_date
set @bakfile = @prefix+@datefile+'.bak'
set @rarfile = @prefix+@datefile+'.rar'
--备份
BACKUP Database mpe_db_Data TO DISK = @bakfile WITH NOFORMAT, NOINIT,  NAME = N'xx-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
--压缩rar
set @rarcmd ='"c:\Program Files\WinRAR\winrar.exe" ' +'a -df ' +@rarfile+' '+@bakfile
exec master..xp_cmdshell @rarcmd,NO_OUTPUT;

别问我代码都是干啥的,无非就是打开权限,创建变量、时间戳的文件名、备份脚本、启动备份,哈哈。。都说完了,你也不用问了,

  • 你是不是要问,那删除文件呢?
--删除15天之前的备份
set  @sql='del  d:\DataBase\xx' +rtrim(replace(replace(replace(convert(varchar(20),getdate()-15, 120),' ',''),'-',''),':',''))+'.rar'

为啥删除15天的?你想删除多少天,自己写, -15 的15,随你填写。

好了,言归正传,下面是我编写的windows 服务实现,请看:

  1. 通过C#编写的windows服务进行数据库备份

使用方法如下

  • 通过 服务部署工具.bat 配置和安装windows服务

没了,嘎嘎。。上图

图1 使用管理员,打开部署脚本

图2 根据指示进行配置操作,输入1 是进入配置

图3 配置界面

 

图4 安装完成后,启动服务

好了,全部操作演示完毕,是不是说,那么师傅,代码呢?

楼下五步走

CSDN下载地址:https://download.csdn.net/download/l9861226/10585437

暂时还没有通过,得等等才通过审核,刚刚上传上

(代码纯手工打造,要点积分,别介意哈)

代码遇到一个小小的bug,当备份数据库巨大时,有的服务器会出现超时现象,我将SqlCommand的 CommandTimeout值设置为3600秒了,问题解决,因为数据大小是32个G,收缩日志之后,所以出现了这个问题,以解决,各位自行修改代码解决即可,代码如下:

 

 

调用处

实现代码如下:

public static int ExecuteSqlSetTimeOut(string cmdText, int timeOut)
        {
            SqlCommand cmd = new SqlCommand();
            PrepareCommand(cmd, connection, null, CommandType.Text, cmdText, null);
            cmd.CommandTimeout = timeOut;
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }

完事~!!!啦啦啦。。。

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

树莓派4b + Ubuntu20.04 Server 安装Java8

安装环境: 树莓派4b + Ubuntu20.04 Server 32位 1. 下载jdk https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 2. 解压 tar -zxvf jdk-8u251-linux-arm32-vf......

SummerGao
24分钟前
9
0
项目实战:Qt+OpenCV图像处理与识别算法平台

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址:h...

红模仿_红胖子
27分钟前
7
0
北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码破解 道翰天琼认知智能api机器人接口。

医疗事关人身安全,要求极高,容错率极低,因此,知识壁垒和技术壁垒都很高。过去,AI系统更多的是服务于终端,辅助医生诊断、决策。但是,医疗很复杂,直接切入终端问题很多。未来十年,AI+...

jackli2020
31分钟前
11
0
源于HystrixCommandStartStream和RollingCommandMaxConcurrencyStream 的 RxJava demo

其实,最近在工作之余看Hystrix源代码已经有一个多月了, 除了对 HystrixCommandProperties ,HystrixCommand 和AbstractCommand 几个类比较了解以外,其余看山不是山,比较懵, 主要是因为H...

专业写BUG的程序员
34分钟前
16
0
聊聊Java中的异常及处理

前言 在编程中异常报错是不可避免的。特别是在学习某个语言初期,看到异常报错就抓耳挠腮,常常开玩笑说编程1分钟,改bug1小时。今天就让我们来看看什么是异常和怎么合理的处理异常吧! 异常...

良许Linux
37分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部