如何用WRAR自动压缩每天备份的数据库文件,并把每个文件放在单独的压缩文件里

如何用WRAR自动压缩每天备份的数据库文件,并把每个文件放在单独的压缩文件里,第1张

1、 先开启xm_cmdshell服务

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

两种方式启用xp_cmdshell

a.打开外围应用配置器—>

功能的外围应用配置器—>

实例名Database Enginexp_cmdshell—> 启用

b.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

2、新建立一个作业,名称命名为“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

3、 然后开始执行对数据库的压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入如下的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

4、设定计划任务

5、如果执行一下代码 首先必须安装WinRar 然后 在环境变量中---系统环境变量 Path 中 把Rar.exe 的路径加进去 (如:C:/Program Files/WinRar/) 这样就可以了。只需要加路径。。。不需要Rar.exe。

实现SQL server2005数据库自动备份压缩功能有两种方式,自动功能和用第三方工具,自带功能比较复杂,请直接参考百度文库教程,如下:http://wenku.baidu.com/link?url=HzqV-FOopbL8jCl1fx8Fh0E5qgS4dGrONoc3xRGcDcx6rQbS9hkobN4aq4MQdX12JdFKHvaOQSRg1lympn-L7wFynKq2p4N0za04ZoV5LpW

用第三方工具“多备份”也可以实现数据库自动备份压缩,节省存储空间


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10821323.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存