SQLServer自动备份、压缩、删除旧文件

SQLServer自动备份、压缩、删除旧文件
SQLServer自动备份、压缩、删除旧文件

SQLServer自动备份、压缩、删除旧文件

作为者数据库维护人员,可能大家经常要做的事情就是备份数据库,并且为了安全起见最好是异地备份,但是如果要经常备份,然后把他们传到本地,是一件非常费时费力的事情,尤其像我这种比较懒的程序员,甚至有时候会忘记备份,所以比较好的解决办法就是让SQL Server自动备份,同时自动下载。同时由于SQL Server自动备份的bak文件通常都比较大,如果直接传到本地,要花比较久的时间,因此为了提高效率最好在备份后先压缩,并且为了安全起见,下载下来的文件还要加密。那么如何让SQL自动备份、加密压缩、删除旧的BAK文件并自动下载的所有流程都自动完成呢,下面我就将我使用到的工具、方法和代码共享出来,供大家参考。

第一步:在查询分析器中执行以下命令

use master

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;

RECONFIGURE;

SQL Server2000可以跳过这一步,而对于SQL Server2005因为它默认是不支持xp_cmdshell执行命令的,SQL Server 已封锁元件 'xp_cmdshell' 的程序 'sys.xp_cmdshell' 的存取,此元件已经由此伺服器的安全性组态关闭,系统管理员可以使用sp_configure来启用 'xp_cmdshell' 的使用,所以我们得恢复其执行命令。

第二步:在SQL企业管理器—>SQL代理(如果服务未启用,先启用该服务)—>作业—>新建作业

①在常规选项中输入作业名称如图1:

图1

②录入作业步骤:在步骤选项中新建作业步骤1,名称命名为‘XX备份、压缩’,然后在命令框中输入如下的SQL 代码:

declare

@prefix nvarchar(100),

@datefile nvarchar(100),

@bakfile nvarchar(100),

@rarfile nvarchar(100),

@delcmd nvarchar(100),

@rarcmd nvarchar(150)

set @prefix='F:\ERP\'--备份文件夹

set @datefile='DB_AAA'+cast(Year(GetDate())as varchar(4))+cast(Month(GetDate())as varchar(2))+cast(Day(GetDate())as varchar(2))+

CAST(DATEPART(Hour,GETDATE())AS nvarchar(2))+CAST(DATEPART(minute,GETDATE())AS nvarchar(2))--备份文件名

set @bakfile=@prefix+@datefile+'.bak'

set @rarfile=@prefix+@datefile+'.rar'

BACKUP DataBASE DB_AAA TO DISK= @bakfile WITH INIT , NOUNLOAD ,NAME= N'DB_AAA数据备份

', NOSKIP , STATS = 10, NOFORMAT

set @delcmd ='del'+@prefix+'RAR\*.rar'--先清空RAR备份文件夹

set @rarcmd='C:\Progra~1\WinRAR\WinRAR.exe a -p123 '+@rarfile+' '+@bakfile --将yourpw改为您要设置的密码,进行加密压缩

exec master..xp_cmdshell @delcmd

exec master..xp_cmdshell @rarcmd

GO

作业步骤1建好后,新建作业步骤2,名称命名为‘删除当天BAK文件’,然后在命令框中输入如下的SQL代码:declare @d Nvarchar(64);

set @d =convert(varchar,dateadd(day,-0,getdate()),120);

EXECUTE master.dbo.xp_delete_file 0,N'F:\ERP',N'bak',@d;

新建计划任务:在计划选项中新建一个计划任务如下图:

作业计划建好后在SQL企业管理器-->SQL代理-->作业

在作业上点右键查看该作业是否已经启用。

相关主题
相关文档
最新文档