手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

SQL SERVER 如何通过存储过程进行自动压缩备份

时间:2024-10-13 13:19:08

1、第一步,需要做的准备(①建立存放备份文件的目录;②检查电脑或服务器是否有压缩软件);①在SQL SERVER 所在的电脑或服务器上建立备份存放的文件夹。一个原始文件,一个压缩文件分别存放的目录。如下图所示②电脑需要安装压缩软件,如果安装的ghost系统一般电脑自带WinRAR会安装在C盘。如果电脑没有此压缩软件,需要下载一下,默认安装在C盘即可。(此软件只是做压缩文件使用)

SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份

2、第二步我们先把存储过程建立好。此处我以我本地的 TEST_DB库做示例操作步骤:找到需要备份的数据库——>可编程性——>存储过程——>新建存储过程。

SQL SERVER 如何通过存储过程进行自动压缩备份

3、建立存储过程,复制我已经编辑的语句,此处需要注意的地方,更改自己需要备份的数据库,USE [TEST_DB],此处我做的TEST_DB的备份,然后更改需要备份的数据库,备份文件存放目录,以及需要保留的备份文件的天数。其余不用更改,更改需要调整的地方以后,执行语句,建立存储过程完成。USE [TEST_DB]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE procedure [dbo].[TEST_DB]as---定义变量DECLARE @FileNmae varchar(8)DECLARE @FullPath varchar(1000)DECLARE @DELFileNmae varchar(1000) --删除文件DECLARE @DELFileNmaeYs varchar(1000) --删除压缩文件DECLARE @dbbak_path varchar(1000) --备份路径DECLARE @dbbak_ys_path varchar(1000) --压缩备份路径DECLARE @SQL varchar(1000) --执行语句DECLARE @Result int --执行结果set @FileNmae = convert(varchar(8),getdate(),112) --以日期备份文件set @DELFileNmae = convert(varchar(8),getdate()-3,112) --删除3天前文件set @DELFileNmaeYs = convert(varchar(8),getdate()-10,112) --删除10天前压缩文件set @dbbak_path = 'E:\SQL_DB_BAK\TEST_DB_BAK\' --备份路径set @dbbak_ys_path = 'E:\SQL_DB_BAK\TEST_DB_BAK_YS\' --压缩备份路径set @FullPath = @dbbak_path + @FileNmae + '\' + @FileNmae + '.bak' --完整路径-----------------------------------------------set @SQL = 'mkdir '+@dbbak_path+@FileNmae;--创建文件夹ExEc xp_cmdshell @SQL;SET @SQL = @FullPath--select @sql--备份数据库backup database [mkliscenter] to disk = @FullPath with init--压缩数据库set @SQL = @dbbak_path + @FileNmae +'\';--select @sqlset @SQL = 'C:\Progra~1\WinRAR\WinRAR.exe a -ep -r '+@dbbak_ys_path +@FileNmae+' '+@SQL ;--select @sqlexec @result=master..xp_cmdshell @SQL;--删除文件3天前的文件set @SQL='del '+ @dbbak_path+@DELFileNmae+ '\' + @DELFileNmae + '.bak'ExEc xp_cmdshell @SQL;--删除文件夹3天前的set @SQL='RD '+@dbbak_path+@DELFileNmaeExEc xp_cmdshell @SQL;--删除文件10天前的压缩文件set @SQL='del '+ @dbbak_ys_path + @DELFileNmaeYs + '.rar'ExEc xp_cmdshell @SQL;GO

SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份

4、接下来我们测试一下,刚才建立的储存过程是否能正常使用。刷新数据库,看到我们刚刚创建的存储过程。选中以后点击右键,选中“执行存储过程”如果提示xp_cmdshell错误,代表xp_cmdshell没有启用,则需要执行下面语句开启功能;sp_configure 'show advanced options',1reconfiguregosp_configure 'xp_cmdshell',1reconfigurego

SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份

5、执行成功后,到对应的电脑目录查看数据库备份文件以及压缩文件是否成功。

SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份

6、上面我们就完成了存储过程,现在我们建立一个计划任务,让SQL server 按照我们指定的周期去自动执行备份。SQL Server 代理 ——> 作业——>新建作业

SQL SERVER 如何通过存储过程进行自动压缩备份

7、现在我们建立一个定时作业。建立步骤为 常规——>步骤——>计划①常规:常规里面起一个作业的名字如 TEST_DB_BAK,以及一些情况说明,方便下次或者其他同事看到说明以后,清楚这个作业的功能作用。②步骤:新增步骤——>起个名字,选择SQL脚本类型,输入执行语句——>分析——>确认。脚本更改为自己的数据库,已经存储过程名称即可USE [TEST_DB]GOEXEC [dbo].[TEST_DB]③计划:新建计划——>设置执行频率三个步骤设置完成,确定即可。

SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份
SQL SERVER 如何通过存储过程进行自动压缩备份

8、此时我们再到作业中去看,就有我们刚刚建立的作业。只要SQL代理服务不挂,它都会按照我们设置的计划频率去执行备份,自动删除历史备份文件。

SQL SERVER 如何通过存储过程进行自动压缩备份
© 手抄报圈