Sqlserver2005自动定期备份、Rar压缩并删除过期备份

Sqlserver2005自动定期备份、压缩并删除过期备份

一、应用场景

登陆身份:windows身份验证或者 SQL server 身份验证

备份文件路径:E:\DataBackup

备份说明:备份一个月的数据库,然后打包压缩,删除一个月前的备份文件。

 

二、准备工作

1、启动xp_cmdshell 

xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中。由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell 默认是关闭的。

法一:通过新建查询实现

--开启xp_cmdshell部分
EXEC sp_configure 'show advanced options'1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell'1
GO
RECONFIGURE
GO

--通过xp_cmdshell执行shell命令的部分
--------------------------------------------------
Exec xp_cmdshell 'bcp '
GO

--关闭xp_cmdshell部分
-----------------------------------------------------
EXEC sp_configure 'show advanced options'1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell'0
GO
RECONFIGURE
GO


法二:通过SQL server外围应用配置器来实现

1、 点击功能的外围应用配置器

2、选择xp_cmdshell 勾选启动xp_cmdshell,点应用就可以了。

2、 配置WinRAR压缩环境变量

将WinRAR执行文件路径放到环境变量就可以了。点击我的电脑属性->高级->系统环境变量->将执行文件路径放上去

 

 

3、  启动SQL Server代理

 

三、建立作业计划

1、备份一个月的数据库

T-SQL

-----------自动备份一个月的数据库,自动创建文件夹

declare  @sqlPath  varchar(100), ---数据路径

@CubbyholePath varchar(100), ---文件夹名称

@sqlStartDate varchar(100)--本月开始时间

set @sqlStartDate=convert(varchar(10),dateadd(d,-day(getdate())+1,getdate()),120) --得到本月开始时间

set @CubbyholePath=case convert(varchar(10),getdate(),120)

 when @sqlStartDate

 then

'E:\DataBackup\Test'+@sqlStartDate

 ELSE--得到文件名

 'E:\DataBackup\Test'+@sqlStartDate

end

set @sqlPath=@CubbyholePath+'\Test'+rtrim(convert(varchar,getdate(),112))+'.bak'--备份bak文件完整路径

if(convert(varchar(10),getdate(),120)=@sqlStartDate)--判断是否为本月第一天,是则创建一个新的文件架

begin

set @CubbyholePath='mkdir '+@CubbyholePath

exec xp_cmdshell @CubbyholePath--' madik E:\DataBackup\'+convert(varchar(10),getdate(),120)--如果为当月的第一天,创建一个文件夹

end

backup  database  Test to  disk=@sqlPath

go

 2、步骤

 新建作业:

 

新建步骤:

将刚刚的脚本复制到命令里面

 

 

新建计划

点确定,自动备份完成。

 

 

2、自动压缩一个月的bak文件,删除过期备份

T-SQL

------------自动压缩一个月的bak文件

declare @sqlPath  varchar(100), ---数据路径

@CubbyholePath varchar(100) ---文件夹路径

set @CubbyholePath='E:\DataBackup\Test'+convert(varchar(10),dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),120)

set @sqlPath='RAR.EXE A -R '+@CubbyholePath+'.rar '+'E:\DataBackup\Test'+convert(varchar(10),dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),120)

exec xp_cmdshell @sqlPath

go

 

-----------------自动删除文件夹

declare  @sqlPath  varchar(100), ---数据路径

@CubbyholePath varchar(100)---文件夹名称

set @CubbyholePath='E:\DataBackup\Test'+convert(varchar(10),dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),120)

set @sqlPath='RD/s/q '+@CubbyholePath

exec xp_cmdshell @sqlPath

go

 

建立作业计划,将脚本复制过去就可以了。

需要注意的是步骤里面分两步,先压缩,后备份。

创建计划,这个我每个月的第一天执行一次。

点击确定,作业创建完成。

四、测试作业

注意:因为本人的方法是根据每个月第一天创建文件夹,如果当天不是本月第一天,先手动创建文件夹,文件夹名称:Test2013-07-01

1、 测试备份功能

修改系统时间,测试备份功能

成功!

 

2、 测试压缩删除功能

调整时间为8月1号1.09分

测试成功!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值