自动压缩备份数据库

来源:互联网 发布:伊辛模型知乎 编辑:程序博客网 时间:2024/05/23 18:07

自动备份数据库,相信大家都很清楚,我们可以利用SQL Server的作业来完成,然而我们需要备份的数据库文件较大,这时我们可能会想到利用xp_makecab来压缩,然后使用DEL命令删除已经压缩过的文件。示例如下:

/*

备份数据库,用于作业中,分三步1、备份指定库、压缩指定文件、删除指定文件

*/

--第一步备份指定库

DECLARE @path varchar(100) --声名备份路径

SELECT @path = 'E:/BackData/HCMS'+ convert(varchar(30),getdate(),12) + ltrim(str(DATEPART (hh, getdate())))

backup database HCMS to disk=@path with init --备份

 

--第二步压缩指定文件(注此压缩对大于2G的文件会失败)

DECLARE @path varchar(100)

DECLARE @command  varchar(200)

--备份数据库

SELECT @path = 'E:/BackData/HCMS'+ convert(varchar(30),getdate(),12) + ltrim(str(DATEPART (hh, getdate())))

SELECT @command = @path+'.cab'

exec master.dbo.xp_makecab @command,mszip,1,@path

GO

 

--第三步删除指定的文件

DECLARE @command  varchar(200)

 

SELECT @command = 'DEL ' + 'E:/BackData/HCMS'+ convert(varchar(30),getdate(),12) + ltrim(str(DATEPART (hh, getdate())))

EXEC master.dbo.xp_cmdshell @command, NO_OUTPUT

 

然而随着时间的流逝,数据库文件越来越大,忽然有一天发送压缩失败,原来xp_makecab命令不能压缩超过2G的文件,所以导致上面的第二步就会失败,怎么办呢?我们可利用压缩工具RarWindows任务计划来实现。

我们可以建一个bat文件, bat文件内容如下:(此示例仅演示压缩示例,大家可根据需要参照RAR命令帮助自行更改)

@echo off

echo.

echo.

color a

cls

@echo off

echo.

echo                 欢迎来到数据库备份压缩批处理

echo.

echo.

echo.

echo.                    ....正在自动压缩备份数据....

echo ------------------------------------------------------------------------------

 

echo.

echo.

echo.

echo.

echo.

@echo off

if not exist E:/Temp/HCMS%date:~0,4%%date:~5,2%%date:~8,2%1830.bak goto existfile   --检查是否存在未被压缩数据库备份文件

goto backup

 

:backup

echo 已经找到备份好的备份文件HCMS%date:~0,4%%date:~5,2%%date:~8,2%1830.bak

echo .

echo !!!提示:正在压缩备份文件....!!!

echo .

echo !!!提示:正在将备份文件HCMS%date:~0,4%%date:~5,2%%date:~8,2%1830.bak压缩到G:/Cabfiles/HCMS%date:~0,4%%date:~5,2%%date:~8,2%2000.RAR文件中.......   --只是显示屏幕而已,中间的文件名没实际用处

 

"C:/Program Files"/WinRAR/winrar.exe a -as -ibck E:/HCMS.rar -m3 -agyyyymmddhhmmss E:/Temp/HCMS%date:~0,4%%date:~5,2%%date:~8,2%1830.bak      --如不知道什么意思,WINRAR命令行的参数参考一下。

goto end

 

:existfile

echo.

echo !!!备份失败!!!

echo 没有找到已经备份好的备份文件HCMS%date:~0,4%%date:~5,2%%date:~8,2%1830.bak

echo.

echo.

echo.

pause

goto end

:end

 

echo 操作完毕

 

更多资料请查看http://download.csdn.net/source/2813346

 

原创粉丝点击