首页 > 电脑专区 > windows >

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

来源:互联网 2023-02-22 11:23:02 53

SQL SERVER 如何通过存储过程配合计划任务进行自动压缩备份9gm办公区 - 实用经验教程分享!

工具/原料

服务器/台式机/笔记本安装有SQL SERVER软件windowswinserver/win7/win10SQL SERVER2008 R2SQL SERVER / xp_cmdshell

方法/步骤

1

1.第一步,需要做的准备(①建立存放备份文件的目录;②检查电脑或服务器是否有压缩软件);9gm办公区 - 实用经验教程分享!

①在SQL SERVER 所在的电脑或服务器上建立备份存放的文件夹。9gm办公区 - 实用经验教程分享!

一个原始文件,一个压缩文件分别存放的目录。如下图所示9gm办公区 - 实用经验教程分享!

②电脑需要安装压缩软件,如果安装的ghost系统一般电脑自带WinRAR会安装在C盘。如果电脑没有此压缩软件,需要下载一下,默认安装在C盘即可。(此软件只是做压缩文件使用)9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

2

2.第二步我们先把存储过程建立好。此处我以我本地的 TEST_DB库做示例9gm办公区 - 实用经验教程分享!

操作步骤:找到需要备份的数据库——>可编程性——>存储过程——>新建存储过程。9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

3

3.建立存储过程,复制我已经编辑的语句,此处需要注意的地方,更改自己需要备份的数据库,USE [TEST_DB],此处我做的TEST_DB的备份,然后更改需要备份的数据库,备份文件存放目录,以及需要保留的备份文件的天数。其余不用更改,更改需要调整的地方以后,执行语句,建立存储过程完成。9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

USE [TEST_DB]9gm办公区 - 实用经验教程分享!

GO9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

SET ANSI_NULLS ON9gm办公区 - 实用经验教程分享!

GO9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

SET QUOTED_IDENTIFIER ON9gm办公区 - 实用经验教程分享!

GO9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

CREATE procedure [dbo].[TEST_DB]9gm办公区 - 实用经验教程分享!

as9gm办公区 - 实用经验教程分享!

---定义变量9gm办公区 - 实用经验教程分享!

DECLARE @FileNmae varchar(8)9gm办公区 - 实用经验教程分享!

DECLARE @FullPath varchar(1000)9gm办公区 - 实用经验教程分享!

DECLARE @DELFileNmae varchar(1000) --删除文件9gm办公区 - 实用经验教程分享!

DECLARE @DELFileNmaeYs varchar(1000) --删除压缩文件9gm办公区 - 实用经验教程分享!

DECLARE @dbbak_path varchar(1000) --备份路径9gm办公区 - 实用经验教程分享!

DECLARE @dbbak_ys_path varchar(1000) --压缩备份路径9gm办公区 - 实用经验教程分享!

DECLARE @SQL varchar(1000) --执行语句9gm办公区 - 实用经验教程分享!

DECLARE @Result int --执行结果9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

set @FileNmae = convert(varchar(8),getdate(),112) --以日期备份文件9gm办公区 - 实用经验教程分享!

set @DELFileNmae = convert(varchar(8),getdate()-3,112) --删除3天前文件9gm办公区 - 实用经验教程分享!

set @DELFileNmaeYs = convert(varchar(8),getdate()-10,112) --删除10天前压缩文件9gm办公区 - 实用经验教程分享!

set @dbbak_path = 'E:SQL_DB_BAKTEST_DB_BAK' --备份路径9gm办公区 - 实用经验教程分享!

set @dbbak_ys_path = 'E:SQL_DB_BAKTEST_DB_BAK_YS' --压缩备份路径9gm办公区 - 实用经验教程分享!

set @FullPath = @dbbak_path @FileNmae '' @FileNmae '.bak' --完整路径9gm办公区 - 实用经验教程分享!

-----------------------------------------------9gm办公区 - 实用经验教程分享!

set @SQL = 'mkdir ' @dbbak_path @FileNmae;9gm办公区 - 实用经验教程分享!

--创建文件夹9gm办公区 - 实用经验教程分享!

ExEc xp_cmdshell @SQL;9gm办公区 - 实用经验教程分享!

SET @SQL = @FullPath9gm办公区 - 实用经验教程分享!

--select @sql9gm办公区 - 实用经验教程分享!

--备份数据库9gm办公区 - 实用经验教程分享!

backup database [mkliscenter] to disk = @FullPath with init9gm办公区 - 实用经验教程分享!

--压缩数据库9gm办公区 - 实用经验教程分享!

set @SQL = @dbbak_path @FileNmae '';9gm办公区 - 实用经验教程分享!

--select @sql9gm办公区 - 实用经验教程分享!

set @SQL = 'C:Progra~1WinRARWinRAR.exe a -ep -r ' @dbbak_ys_path @FileNmae ' ' @SQL ;9gm办公区 - 实用经验教程分享!

--select @sql9gm办公区 - 实用经验教程分享!

exec @result=master..xp_cmdshell @SQL;9gm办公区 - 实用经验教程分享!

--删除文件3天前的文件9gm办公区 - 实用经验教程分享!

set @SQL='del ' @dbbak_path @DELFileNmae '' @DELFileNmae '.bak'9gm办公区 - 实用经验教程分享!

ExEc xp_cmdshell @SQL;9gm办公区 - 实用经验教程分享!

--删除文件夹3天前的9gm办公区 - 实用经验教程分享!

set @SQL='RD ' @dbbak_path @DELFileNmae9gm办公区 - 实用经验教程分享!

ExEc xp_cmdshell @SQL;9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

--删除文件10天前的压缩文件9gm办公区 - 实用经验教程分享!

set @SQL='del ' @dbbak_ys_path @DELFileNmaeYs '.rar'9gm办公区 - 实用经验教程分享!

ExEc xp_cmdshell @SQL;9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

GO9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

4

4.接下来我们测试一下,刚才建立的储存过程是否能正常使用。9gm办公区 - 实用经验教程分享!

刷新数据库,看到我们刚刚创建的存储过程。9gm办公区 - 实用经验教程分享!

选中以后点击右键,选中“执行存储过程”9gm办公区 - 实用经验教程分享!

如果提示xp_cmdshell错误,代表xp_cmdshell没有启用,则需要执行下面语句开启功能;9gm办公区 - 实用经验教程分享!

sp_configure 'show advanced options',19gm办公区 - 实用经验教程分享!

reconfigure9gm办公区 - 实用经验教程分享!

go9gm办公区 - 实用经验教程分享!

sp_configure 'xp_cmdshell',19gm办公区 - 实用经验教程分享!

reconfigure9gm办公区 - 实用经验教程分享!

go9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

5

5.执行成功后,到对应的电脑目录查看数据库备份文件以及压缩文件是否成功。9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

6

6.上面我们就完成了存储过程,现在我们建立一个计划任务,让SQL server 按照我们指定的周期去自动执行备份。9gm办公区 - 实用经验教程分享!

SQL Server 代理 ——> 作业——>新建作业9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

7

7.现在我们建立一个定时作业。建立步骤为 常规——>步骤——>计划9gm办公区 - 实用经验教程分享!

①常规:常规里面起一个作业的名字如 TEST_DB_BAK,以及一些情况说明,方便下次或者其他同事看到说明以后,清楚这个作业的功能作用。9gm办公区 - 实用经验教程分享!

②步骤:新增步骤——>起个名字,选择SQL脚本类型,输入执行语句——>分析——>确认。9gm办公区 - 实用经验教程分享!

脚本更改为自己的数据库,已经存储过程名称即可9gm办公区 - 实用经验教程分享!

USE [TEST_DB]9gm办公区 - 实用经验教程分享!

GO9gm办公区 - 实用经验教程分享!

EXEC [dbo].[TEST_DB]

9gm办公区 - 实用经验教程分享!

9gm办公区 - 实用经验教程分享!

③计划:新建计划——>设置执行频率9gm办公区 - 实用经验教程分享!

三个步骤设置完成,确定即可。9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

8

此时我们再到作业中去看,就有我们刚刚建立的作业。只要SQL代理服务不挂,它都会按照我们设置的计划频率去执行备份,自动删除历史备份文件。9gm办公区 - 实用经验教程分享!

SQL SERVER 如何通过存储过程进行自动压缩备份9gm办公区 - 实用经验教程分享!

注意事项

电脑安装了WinRAR压缩软件,开启SQL SERVER 的 xp_cmdshell需要有一定存储过程使用基础的朋友使用,挺方便的自动备份自动删除历史文件此操作对数据库风险不高,我们只搞备份,就算不成功也不会对它造成损坏

以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!9gm办公区 - 实用经验教程分享!


标签: 过程通过

办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码