关于SQL自动备份的方法在本Blog中有些过相关的文章
可以参看:http://fableking.iteye.com/blog/361021
这里就讲如何让产生后的备份文件自动压缩并删除源文件的方法
其实这里利用的是winrar的命令行来执行压缩并删除源文件的方法的
winrar命令行的压缩命令是[winrar路径] a [参数] [压缩后的路径] [需要压缩的文件路径],这是本文需要用到的命令格式
之后我们就要解决如何让SQL来执行这个命令行了
方法就是调用SQL的exec master..xp_cmdshell @cmd的存储过程方法来执行,这样我们就能够实现我们的目的了
大概方向已经取得,之后就是按实际要求来操作它们了,这里我只讲我的使用方法,具体的还是要看大家的具体需要的
我的SQL备份是每天都要执行的,所以我在设置自动备份的时候就是把备份文件名设置成当天日期的格式的
这是备份的命令:
declare @filename varchar(100)
set @filename='D:\'+convert(char(10),getdate(),120) --设置备份文件的路径和文件名
print @filename
backup database[databasename] to disk=@filename with NOINIT,NOUNLOAD,NAME='backup',NOSKIP,STATS=10,NOFORMAT --执行备份
这是压缩并删除源文件的命令:
declare @file varchar(100)
set @file='c:\winrar.exe a -ep -df D:\'+convert(char(10),getdate(),120)+'.rar D:\'+convert(char(10),getdate(),120) --将压缩备份文件并删除源文件的winrar命令行命令
exec master..xp_cmdshell @file --执行命令
这里解释下压缩的命令,关于备份的命令因为之前的文章说明过,这里就不作多余的解释了
这里我本来是想把@file的命令直接写在exec master..xp_cmdshell @cmd的@cmd位置的,但之后发现这里不支持使用"+"号,一下子有点郁闷,幸好后来使用变量解决了该问题。。所以这里使用了@file的变量,不这样的话,命令就无法如意执行了。
'c:\winrar.exe a -ep -df D:\'+convert(char(10),getdate(),120)+'.rar D:\'+convert(char(10),getdate(),120)
解释下这句话的具体意思:
一般默认下winrar的程序都是安装在C:\Program Files\WinRAR下的,但是由于其中的Program Files目录名中有空格,CMD命令行中是不支持有空格的名字的,所以只好把程序复制到一个简单的路径,然后加以调用了。
本来想过使用环境变量添加path来用的,结果这个方法在cmd中可行,放在sql中调用就不行,没办法,暂时就只好重新定义winrar的路径来解决问题了。
a就是winrar压缩文件的命令参数
-ep参数的作用是不压缩文件的完整路径,也就是指压缩指定的文件。
-df参数的作用就是压缩后删除源文件
后面命令的意思就是把D盘根目录下以当天日期命名的备份文件压缩到D盘根目录,并命名为当天日期的rar文件
更多的winrar参数命令可以参考winrar的帮助文档。
-------------------------------------------------------------------------
差不多就是这样了,这个问题我花了差不多一个上午的时间来研究,当中还碰到了sql权限的问题,所以这里还要特别说一下,新建这个作业的用户必须是拥有对master数据库有读写权限的用户,不然是不能执行xp_cmdshell的存储过程的。
分享到:
相关推荐
非常实用的SQL_Server数据库自动备份并压缩文档
用C#写的sql数据库备份工具(源代码),界面模仿别人的 可以下载下来参考或修改使用
SQL2000自动备份压缩工具,带时间任务定时功能
或者苦于自动备份文件多了忘了删,结果当您要用的时候,发现磁盘空间已满,数据库上周就停止自动备份了?这个存储过程只要您把你的要的备份的数据库名写进去,再给它加一个调度,它就可以自动为您备份数据,删除指定...
该工具,可设定备份哪几个数据库,是通过vbs与cmd实现,只需改一点配置就可以实现,附带了Oracle的备份
SQL2012自动备份及日志压缩 数据库自动备份 日志文件自动压缩,及定时清空表数据。
SQL_Server_2008维护计划实现数据库定时自动备份
软件特色: 1、纯“绿色化”、永久免费、无需...7、自动备份支持zip压缩,FTP上传、Email发送功能,可自由设置自动删除某天前SQL数据库备份; 8、完美支持超大SQL数据库备份(经测试:支持10G或更大SQL数据库备份)。
在任务计划中添加任务计划,定时启动,用于压缩SQL的自动备份文件,当然配成自动压缩其他文件也是可以。 <!--压缩后文件名模式,1.以每个文件名命名;2.整个文件夹压成一个日期时间.rar--> <!--多个...
备份服务器上的所有数据库,并加密压缩存放
功能说明:备份SQLServer数据库,并压缩打包,传至远程FTP服务器,做到本地异地同时备份,可自动清理本地备份,自动保留N个最新备份(针对此种备份,不针对文件夹),老的备份自动删除;将此脚本加入系统任务计划,则...
3.自动备份任务数量无限制,可将相应数据库及备份模式进行随意组合; 4.自动/手工备份本地或局域网(远程)SQL Server数据库,备份文件与当前连接的SQL Server完全保持一致; 5.通过ZIP模式压缩并加密数据库备份文件...
PB实现sql数据库自动备份 数据恢复 特殊数据处理 数据上传下载
通过with compression显式启用备份压缩,指定对此备份执行备份压缩,覆盖服务器级默认设置。适用于 SQL Server 2008和更高版本。 因为相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备 I/O 通常较少,...
3.自动备份任务数量无限制,可将相应数据库及备份模式进行随意组合; 4.自动/手工备份本地或局域网(远程)SQL Server数据库,备份文件与当前连接的SQL Server完全保持一致; 5.通过ZIP模式压缩并加密数据库备份文件...
3)自动备份任务数量无限制,可将相应数据库及备份模式进行随意组合; 4)自动/手工备份本地或局域网(远程)SQL Server数据库,备份文件与当前连接的SQL Server完全保持一致; 5)通过ZIP模式压缩并加密数据库备份...
MS SQL SERVER全自动备份,全傻瓜操作,支持备份完成后压缩、发送邮件通知! delphi 2007写的,需要源码的可以给我发送邮件,cd6644#126.com,#需要换成@
sql server数据库本地自动备份,可自定义时间,自动删除,自动压缩,自动发送邮件。
3)自动备份任务数量无限制,可将相应数据库及备份模式进行随意组合; 4)自动/手工备份本地或局域网(远程)SQL Server数据库,备份文件与当前连接的SQL Server完全保持一致; 5)通过ZIP模式压缩并加密数据库...
3、自动备份任务数量无限制,可将相应数据库及备份模式进行随意组合; 4、自动/手工备份本地或局域网(远程)SQL Server数据库,备份文件与当前连接的SQL Server完全保持一致; 5、通过ZIP模式压缩并加密数据库...