Sql server 2005 自動備份並壓縮備份文件RAR

 

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

--如果執行一下代碼  首先必須安裝WinRar 然後  在環境變量中---系統環境變量 Path 中 把Rar.exe 的路徑加進去 (如:C:/Program Files/WinRar/) 這樣就可以了,看好了 只需要加路徑。。。不需要Rar.exe;我們之前乾的這些步驟是爲了  下面紅色地方,因爲要執行Rar.exe  不然會報  不是內部程序 或者不是內部命令 。。。

 

--備份數據庫
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='H:/BackUpCost/Costing/CostDB_'  -- 備份目錄及備份的文件頭
+replace(replace(replace(CONVERT(varchar(16), getdate(), 120 ),'-',''),' ',''),':',''); 
--數據路徑及 當前時間文件名
SET @strSqlCmd= @strSql+'.BAK'    --備份文件的擴展名

BACKUP DATABASE [Costing]  --要備份的數據庫名稱
 TO  DISK = @strSqlCmd WITH INIT
 ,NOUNLOAD
 ,NAME = N'MyDb 備份'
 ,NOSKIP
 ,STATS = 10
 ,NOFORMAT


go

 

--壓縮數據庫

Declare @TimeNow nvarchar(500)
set @TimeNow=replace(replace(replace(CONVERT(varchar(16), getdate(), 120 ),'-',''),' ',''),':','');

DECLARE @strSqlTo   VARCHAR(1000)
DECLARE @strSqlFrom   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 @strSqlFrom='H:/BackUpCost/Costing/CostDB_'  --
備份目錄及備份的文件頭  從那個目錄備份及原始文件在哪
+ @TimeNow
SET @strSqlTo='H:/BackUpCost/CostingRAR/CostDB_'  --
備份目錄及備份的文件頭  備份到那個目錄下
+@TimeNow
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+'  >> H:/BackUpCost/Costing/CostDB_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
EXEC master.dbo.XP_CMDSHELL @strSqlCmd

SET @strSqlCmd= 'Rar.exe A -R '+@strSqlTo+'.RAR '+@strSqlFrom+'.BAK >> H:/BackUpCost/Costing/CostDB_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

PRINT LEN(@strSqlCmd)
PRINT (@strSqlCmd)

EXEC master.dbo.XP_CMDSHELL @strSqlCmd  --這個是真正備份的語句

SET @strSqlCmd= 'ECHO 壓縮日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+'  >> H:/BackUpCost/Costing/CostDB_'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
EXEC master.dbo.XP_CMDSHELL @strSqlCmd

發佈了58 篇原創文章 · 獲贊 4 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章