SQL SERVER 如何通过存储过程进行自动压缩备份
来源:网络收集 点击: 时间:2024-07-071.第一步,需要做的准备(①建立存放备份文件的目录;②检查电脑或服务器是否有压缩软件);
①在SQL SERVER 所在的电脑或服务器上建立备份存放的文件夹。
一霜盆帽个原始文件,一个压缩文件分别存放的目录。如下图所示
②电脑需要安装压缩软件,如果安装的ghost系统一般电脑自带WinRAR会安装在C盘。如果电脑没有此压缩软件,需要下载一下,默认安装在C盘即可。(此软件只是做压缩文件使用)


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

3.建立存储过程,复制我已经编辑的语句,此处需要注意的地方,更改自己需要备份的数据库,USE ,此处我做的TEST_DB的备份,然后更改需要备份的数据库,备份强搁文件存放目录,以及需要保留的备份文件的天数。其余不用更改,更改需要调整的地方以后,执行语句,建立存储过程完成。
USE
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure .
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 to disk = @FullPath with init
--压缩数据库
set @SQL = @dbbak_path + @FileNmae +\;
--select @sql
set @SQL = C:\Progra~1\WinRAR\WinRAR.exe a -ep -r +@dbbak_ys_path +@FileNmae+ +@SQL ;
--select @sql
exec @result=master..xp_cmdshell @SQL;
--删除文件3天前的文件
set @SQL=del + @dbbak_path+@DELFileNmae+ \ + @DELFileNmae + .bak
ExEc xp_cmdshell @SQL;
--删除文件夹3天前的
set @SQL=RD +@dbbak_path+@DELFileNmae
ExEc xp_cmdshell @SQL;
--删除文件10天前的压缩文件
set @SQL=del + @dbbak_ys_path + @DELFileNmaeYs + .rar
ExEc xp_cmdshell @SQL;
GO



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


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


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

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




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

电脑安装了WinRAR压缩软件,开启SQL SERVER 的 xp_cmdshell
需要有一定存储过程使用基础的朋友使用,挺方便的自动备份自动删除历史文件
此操作对数据库风险不高,我们只搞备份,就算不成功也不会对它造成损坏
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_942314.html