SQL SERVER 定时自动备份,并将备份文件加密压缩

SQL SERVER 定时自动备份,并将备份文件加密压缩(2008-11-12 11:21:48)标签:it   分类:操作系统@数据库

    最近因为公司要升级HR系统,我被安排管理这个项目,公司为了安全起见和我签署了保密协议,按了手印责任就大了,所以要想办法加强系统、应用、数据库的安全,系统无法控制,应用的安全还不错,所以我就着手做数据库的安全,数据库用户及密码都控制了,现在需要对自动备份的数据文件进行加密,以下就是我使用到的工具、方法和代码共享出来,供大家参考。

   第一个步骤:就是让SQL Server自动备份数据库,通过DB维护计划完成,这个我就不详细说了。

   第二个步骤:就是加密并压缩备份的数据库文件。为了在备份后,马上进行压缩,最方便的就是直接使用SQL命令执行压缩,由于WinRAR可以通过命令行调用,所以我们可以使用SQL Server中的xp_cmdshell命令来执行压缩指令,同时通过其中的一些参数指定压缩密码,这样加密压缩就实现了。(为了实现此功能,服务器上要安装WinRAR)

   第三步骤:修改维护计划里调用的SQL,在命令中输入执行备份、加密、删除备份的文件的存储过程。

 

实施步骤和代码:

 

1、在备份的数据库中建立存储过程

 

CREATE procedure hrp_backup
--alter procedure hrp_backup
WITH ENCRYPTION
AS
declare
@prefix nvarchar(100),
@datefile nvarchar(100),
@bakfile nvarchar(100),
@rarfile nvarchar(100),
@delcmd nvarchar(100),
@rarcmd nvarchar(150)
set @prefix='D:/Database_bak/' --备份文件夹
set @datefile='HRM8_DBBAK_'+cast(Year(GetDate()) as varchar(4))+cast(Month(GetDate()) as varchar(2))+cast(Day(GetDate()) as varchar(2))
set @bakfile=@prefix+@datefile+'.bak'
set @rarfile=@prefix+''+@datefile+'.rar'
BACKUP DataBASE HRM8 TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'HR数据备份', NOSKIP , STATS = 10, NOFORMAT
--set @delcmd = 'del '+@prefix+ 'RAR/*.rar'   --先清空RAR备份文件夹
set @rarcmd ='C:/Progra~1/WinRAR/WinRAR.exe a  -ppassword -df -ep1 '+@rarfile+' '+@bakfile

-- -df压缩后删除文件 -ep1 从名称中排除基本目录

--将password改为您要设置的密码,进行加密压缩
 
--exec master..xp_cmdshell @delcmd
exec master..xp_cmdshell @rarcmd


go

2、新建维护计划,在Transact-SQL命令中执行以上的存储过程。

   exec hrp_backup
   go

 

验证调试成功。  

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值