如何让SQL Serv er 数据库自动备份并压缩 如果SQL Server 代理没有启动,我们先把其启动,然后新建立一个作业,名称命名为“MyDb完全备份”,在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进行完全备份”,然后在命令框中输入如下的 SQL 代码: 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='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头 +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 ...