如何让SQL Server数据库自动备份并压缩成rar文件

本文介绍如何在 SQL Server 中使用 xp_cmdshell 扩展存储过程来执行数据库的完全备份与压缩操作,包括启用 xp_cmdshell 的方法、创建备份作业、执行压缩命令等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、  先开启xm_cmdshell服务

xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell 在SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中。由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell 默认是关闭的。 

 

两种方式启用xp_cmdshell 

  1.打开外围应用配置器—> 
  功能的外围应用配置器—> 
  实例名Database Enginexp_cmdshell—> 启用

 

2.sp_configure 
  --开启xp_cmdshell部分
--------------------------------------------------
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO


--通过xp_cmdshell执行shell命令的部分
--------------------------------------------------
Exec xp_cmdshell 'bcp '
GO


--关闭xp_cmdshell部分
-----------------------------------------------------
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 0
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

 

3、新建立一个作业,名称命名为“MyDb完全备份”,在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进。

DECLARE @strSql   VARCHAR(1000)

 ,@strSqlCmd VARCHAR(1000)

 ,@timeDateDiff INT

SET @timeDateDiff = DATEDIFF(week,0,GETDATE())

SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE())

 WHEN 1 THEN @timeDateDiff -1

 ELSE @timeDateDiff END

SET @strSql='E:\DataBackup\LiangJiaLun219'  -- 备份目录及备份的文件头

 +CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112)  -- 完全备份日期

 +'_0100'    -- 完全备份时间

 +'完全备份'

SET @strSqlCmd= @strSql+'.BAK'    --备份文件的扩展名

BACKUP DATABASE [LiangJiaLun219]

 TO  DISK = @strSqlCmd WITH INIT

 ,NOUNLOAD

 ,NAME = N'LiangJiaLun219 备份'

 ,NOSKIP

 ,STATS = 10

 ,NOFORMAT

 操作如图一: 

                 

 

4、 然后开始执行对数据库的压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入如下的SQL代码:

DECLARE @strSql   VARCHAR(1000)

 ,@strSqlCmd VARCHAR(1000)

 ,@timeDateDiff INT

 ,@strWeekDay VARCHAR(20)

SET @timeDateDiff= DATEDIFF(week,0,GETDATE())

SET @timeDateDiff= CASE DATEPART(WEEKDAY,GETDATE())

 WHEN 1 THEN @timeDateDiff-1

 ELSE @timeDateDiff END

SET @strSql='E:\DataBackup\LiangJiaLun219'  -- 备份目录及备份的文件头

 +CONVERT(CHAR(8),DATEADD(week,@timeDateDiff,0),112)  -- 完全备份日期

 +'_0100'    -- 完全备份时间

 +'完全备份'

SET @strWeekDay= CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN '星期天'

  WHEN 2 THEN '星期一'

  WHEN 3 THEN '星期二'

  WHEN 4 THEN '星期三'

  WHEN 5 THEN '星期四'

  WHEN 6 THEN '星期五'

  WHEN 7 THEN '星期六' END

SET @strSqlCmd= 'ECHO 压缩开始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+'  >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

SET @strSqlCmd= 'RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

PRINT LEN(@strSqlCmd)

PRINT (@strSqlCmd)

EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

SET @strSqlCmd= 'ECHO 压缩日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+'  >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

 

完成后我们可以看到操作步骤的对话框,如图三,数据完全备份的步骤:

 

 

6、设定计划任务

 

 

7、如果执行一下代码  首先必须安装WinRar 然后  在环境变量中---系统环境变量 Path 中 把Rar.exe 的路径加进去 (如:C:/Program Files/WinRar/) 这样就可以了,看好了 只需要加路径。。。不需要Rar.exe;我们之前干的这些步骤是为了  下面红色地方,因为要执行Rar.exe  不然会报  不是内部程序 或者不是内部命令 。。。

 

转载于:https://www.cnblogs.com/liangjialun219/p/3896506.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值