讓SQL自動備份並壓縮

2021-08-22 09:10:15 字數 2105 閱讀 6671

可以參看:

這裡就講如何讓產生後的備份檔案自動壓縮並刪除原始檔的方法

其實這裡利用的是winrar的命令列來執行壓縮並刪除原始檔的方法的

winrar命令列的壓縮命令是[

winrar路徑] a [引數] [壓縮後的路徑] [需要壓縮的檔案路徑],這是本文需要用到的命令格式

之後我們就要解決如何讓sql來執行這個命令列了

方法就是呼叫sql的exec master..xp_cmdshell

@cmd的儲存過程方法來執行,這樣我們就能夠實現我們的目的了

大概方向已經取得,之後就是按實際要求來操作它們了,這裡我只講我的使用方法,具體的還是要看大家的具體需要的

我的sql備份是每天都要執行的,所以我在設定自動備份的時候就是把備份檔案名設定成當天日期的格式的

這是備份的命令:

declare @filename varchar

(100)

set @filename=

'd:\'

+convert

(char

(10),getdate

(),120)

--設定備份檔案的路徑和檔名

print @filename

backup database[databasename] to disk=@filename with noinit,nounload,name

='backup'

,noskip

,stats

=10,

noformat

--執行備份

這是壓縮並刪除原始檔的命令:

declare @file varchar

(100)

set @file='c:\winrar.exe a -ep -df d:\'

+convert

(char

(10)

,getdate

(),120)

+'.rar d:\'

+convert

(char

(10),

getdate

(),120) 

--將壓縮備份檔案並刪除原始檔的winrar命令列命令

exec master..

xp_cmdshell @file  --執行命令

這裡解釋下壓縮的命令,關於備份的命令因為之前的文章說明過,這裡就不作多餘的解釋了

這裡我本來是想把@file的命令直接寫在exec master..xp_cmdshell @cmd的@cmd位置的,但之後發現這裡不支援使用"+"號,一下子有點鬱悶,幸好後來使用變數解決了該問題。。所以這裡使用了@file的變數,不這樣的話,命令就無法如意執行了。

'c:\winrar.exe a -ep -df d:\'

+convert

(char

(10)

,getdate

(),120)

+'.rar d:\'

+convert

(char

(10),

getdate

(),120)

解釋下這句話的具體意思:

一般預設下winrar的程式都是安裝在c:\program files\winrar下的,但是由於其中的program files目錄名中有空格,cmd命令列中是不支援有空格的名字的,所以只好把程式複製到乙個簡單的路徑,然後加以呼叫了。

本來想過使用環境變數新增path來用的,結果這個方法在cmd中可行,放在sql中呼叫就不行,沒辦法,暫時就只好重新定義winrar的路徑來解決問題了。

a就是winrar壓縮檔案的命令引數

-ep引數的作用是不壓縮檔案的完整路徑,也就是指壓縮指定的檔案。

-df引數的作用就是壓縮後刪除原始檔

後面命令的意思就是把d盤根目錄下以當天日期命名的備份檔案壓縮到d盤根目錄,並命名為當天日期的rar檔案

更多的winrar引數命令可以參考winrar的幫助文件。

差不多就是這樣了,這個問題我花了差不多乙個上午的時間來研究,當中還碰到了sql許可權的問題,所以這裡還要特別說一下,新建這個作業的使用者必須是擁有對master資料庫有讀寫許可權的使用者,不然是不能執行xp_cmdshell的儲存過程的。

SQL2000自動備份 壓縮 刪除 備份檔案

create proc dbbf test asdeclare dbname varchar 20 cmd1 nvarchar 120 cmd2 varchar 120 cmd3 varchar 120 i int,filename varchar 80 path varchar 80 set db...

使用SQL語句備份並壓縮資料庫

經常接觸sql server資料庫的朋友,備份資料庫可能是日常最常見的操作。有些朋友習慣於在sql server管理器中手工備份 也有些朋友設定了自動備份。其實還有一種更方便的方法,可以直接通過sql語句進行備份。備份的時候我們會經常發現這麼乙個頭疼的問題,我們備份的資料庫,動不動就是n個g,拷貝和...

使用SQL語句備份並壓縮資料庫

經常接觸sql server資料庫的朋友,備份資料庫可能是日常最常見的操作。有些朋友習慣於在sql server管理器中手工備份 也有些朋友設定了自動備份。其實還有一種更方便的方法,可以直接通過sql語句進行備份。備份的時候我們會經常發現這麼乙個頭疼的問題,我們備份的資料庫,動不動就是n個g,拷貝和...