如何让SQL Server数据库自动备份并压缩

作者&投稿:线肿 (若有异议请与网页底部的电邮联系)
如何让SQL Server数据库自动备份并压缩成rar文件~

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
用第三方工具“多备份”也可以实现数据库自动备份压缩,节省存储空间

从sqlserv2008开始备份都有自动压缩功能,不需要再额外压缩。可以在实例的属性中查看是否有开启压缩备份。
自动备份只需要加任务计划选择定时执行就可以了。
两项用自带的功能就完全能够实现

一般要用第三方工具,才可以压缩


思茅区19692304535: 如何设置SQL Server数据库自动备份 -
柴玉华士: 设定每日自动备份数据库 1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器 2、然后点上面菜单中的工具-->选择数据库维护计划器 3、下一步选择要进行自动备份的数据-->下一步更新...

思茅区19692304535: 如何让SQL Server数据库自动执行管理任务 -
柴玉华士: 1、桌面版的SQL Server没有这个功能.桌面版的意思就是安装在我们平常娱乐工作用的电脑上的.2、服务器版的SQL Server利用它的“SQL Server代理”功能可以“定时”、“隔时”的执行SQL语句,或运行指定的存储过程,还可以执行“维护计划”等.提示的是,SQL Server代理对应的服务必须处于正常的运行状态(默认安装后,是开机自动运行的).

思茅区19692304535: 怎么样使Sql Sever数据库自动备份? -
柴玉华士: 1、启动SQL服务器 2、打开企业管理器 4、进入“管理”下的“数据库维护计划” 5、右键,“新建维护计划”6、下一步7、选择你要备份的数据库,下一步8、下一步9、下一步10、点“更改”,详细设定你要备份的周期 11、下一步,可以更...

思茅区19692304535: 在SqlServer中怎样设置自动增长字段 -
柴玉华士: SQL Server自增字段可以在SQL Server Management Studio或使用SQL语句在程序或者查询分析器里面实现,将为您分别说明. 一、在SQL Server Management Studio中实现SQL Server自增字段 打开SQL Server Management Studio,打开数...

思茅区19692304535: 怎样让SQL server 2008自动加载数据库? -
柴玉华士: 参考下面的代码信息,可以把这些代码写入到数据库的作业中,自动执行自动加载数据库!希望对你有所帮助:假设我们有一个数据库叫“MyDB1”,它有一个.MDF文件和一个.LDF文件.使用下面的事务SQL语句创建这个数据库.再假设....

思茅区19692304535: 怎样让SQL Server每次随Windows的启动而自动启动? -
柴玉华士: 点sql server服务管理器 勾选 “当启动OS时自启动服务”

思茅区19692304535: sql server怎么让数据库自动备份 -
柴玉华士: 在SQL Server 2008数据库中.为了防止数据的丢失我们就需要按时的来备份数据库了.要是每天都要备份的话,人工备份会很麻烦的,自动备份的话就不需要那么麻烦了,只要设置好了,数据库就会自动在你设置的时间段里备份.那么自动备份要怎么设置呢.下面为大家讲解.http://jingyan.baidu.com/article/ea24bc39baa5dcda63b33156.html

思茅区19692304535: SQL数据库如何自动备份和恢复? -
柴玉华士: 一、备份数据库 1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份...

思茅区19692304535: 如何让数据库自动备份 -
柴玉华士: --如果是sql server 企业管理器中有维护计划, --语句备份是: --功能概述:定义创建作业 declare @jobid uniqueidentifier, @jobname sysname set @jobname = n'作业名称' if exists(select * from msdb.dbo.sysjobs where name=@jobname) begin ...

思茅区19692304535: 怎么让SQL数据库自动定时备份 -
柴玉华士: 企业管理器-》进入你使用的数据库界面-》管理-》数据库维护计划-》新建维护计划-》选中你的数据库-》下一步-》进行到指定数据库备份页面时,选择执行的时间-》下一步,选对保存的位置和方式.继续下一步直到完成. 注意 SQL server agent 服务必须运行,才会自动执行维护计划.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网