SQL Server2008的安装,SQLServer2008的安装......
2023-02-22 208 安装
SQL SERVER 如何通过存储过程配合计划任务进行自动压缩备份
1.第一步,需要做的准备(①建立存放备份文件的目录;②检查电脑或服务器是否有压缩软件);
①在SQL SERVER 所在的电脑或服务器上建立备份存放的文件夹。
一个原始文件,一个压缩文件分别存放的目录。如下图所示
②电脑需要安装压缩软件,如果安装的ghost系统一般电脑自带WinRAR会安装在C盘。如果电脑没有此压缩软件,需要下载一下,默认安装在C盘即可。(此软件只是做压缩文件使用)
2
2.第二步我们先把存储过程建立好。此处我以我本地的 TEST_DB库做示例
操作步骤:找到需要备份的数据库——>可编程性——>存储过程——>新建存储过程。
3
3.建立存储过程,复制我已经编辑的语句,此处需要注意的地方,更改自己需要备份的数据库,USE [TEST_DB],此处我做的TEST_DB的备份,然后更改需要备份的数据库,备份文件存放目录,以及需要保留的备份文件的天数。其余不用更改,更改需要调整的地方以后,执行语句,建立存储过程完成。
USE [TEST_DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE 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_BAKTEST_DB_BAK' --备份路径
set @dbbak_ys_path = 'E:SQL_DB_BAKTEST_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 @sql
set @SQL = 'C:Progra~1WinRARWinRAR.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
4.接下来我们测试一下,刚才建立的储存过程是否能正常使用。
刷新数据库,看到我们刚刚创建的存储过程。
选中以后点击右键,选中“执行存储过程”
如果提示xp_cmdshell错误,代表xp_cmdshell没有启用,则需要执行下面语句开启功能;
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
5
5.执行成功后,到对应的电脑目录查看数据库备份文件以及压缩文件是否成功。
6
6.上面我们就完成了存储过程,现在我们建立一个计划任务,让SQL server 按照我们指定的周期去自动执行备份。
SQL Server 代理 ——> 作业——>新建作业
7
7.现在我们建立一个定时作业。建立步骤为 常规——>步骤——>计划
①常规:常规里面起一个作业的名字如 TEST_DB_BAK,以及一些情况说明,方便下次或者其他同事看到说明以后,清楚这个作业的功能作用。
②步骤:新增步骤——>起个名字,选择SQL脚本类型,输入执行语句——>分析——>确认。
脚本更改为自己的数据库,已经存储过程名称即可
USE [TEST_DB]
GO
EXEC [dbo].[TEST_DB]
③计划:新建计划——>设置执行频率
三个步骤设置完成,确定即可。
8
此时我们再到作业中去看,就有我们刚刚建立的作业。只要SQL代理服务不挂,它都会按照我们设置的计划频率去执行备份,自动删除历史备份文件。
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章