设置SQL Server 2008自动压缩备份数据库

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

我们通常在维护数据库的时候,都会建立一个备份的机制,在SQL Server中,我们就可以通过如下的方法来实现:

如果SQL Server代理没有启动,我们先把其启动,然后新建立一个作业,名称命名为“MyDb完全备份”,在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进行完全备份”,然后在命令框中输入如下的SQL代码:

DECLARE @strSql VARCHAR(1000)

,@strSqlCmd VARCHAR(1000)

,@timeDateDiff INT

SET @timeDateDiff = DATEDIFF(week,0,GETDATE())--'1900-01-01', Here '0' stands for '1900-01-01',

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

WHEN 1 THEN @timeDateDiff -1

ELSE @timeDateDiff END

SET @strSql='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件

头,'D:\DataBase\BackData\目录必须存在

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

+'完全备份'

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

BACKUP DATABASE [MyDb]

TO DISK = @strSqlCmd WITH INIT

,NOUNLOAD

,NAME = N'MyDb 备份'

,NOSKIP

,STATS = 10

,NOFORMAT

操作如图一:

图一建立作业对数据库进行完全备份

然后开始执行对数据库的压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入如下的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='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头

+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+' >>

D:\DataBase\BackData\CompressDataBase\MyDb_'+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 >>

D:\DataBase\BackData\CompressDataBase\MyDb__'+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+' >>

D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD( week,@timeDateDiff,0),112)+'.txt'

EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

操作如图二:

图二建立作业对数据进行压缩

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

图三数据完全备份的步骤

我们对照上图,注意两点,第一个是步骤1“成功时”这一列的显示,当成功的时候转到下一步,“失败时”当失败的时候失败后退出,步骤2“成功时”当成功的时候成功后退出,“失败时”当失败时失败后退出。确保两个步骤对数据操作的正常。

再执行“调度”一栏,主要实现在什么时候执行这些作业,我们定在每周日一点的时候开始执行,如图四:

相关文档
最新文档