Skip to main content

MS SQL Express 自動備份

  BUBU 因為公司有使用 SQL Express 版本,因該本版是屬於陽春版,所以無法自動備份資料,所以只能用語法方式來執行備份

112.08.04 BUBU 因現行公司也開始使用 SQL Express 版本,之前使用的方式已無法執行那已有在網路上找到適合的方式以下內容會在做修改.

T-SQL 語法


DECLARE @DBName varchar(20)
Declare @FileName Varchar(50)
Declare @Folder Varchar(50)
Declare @DateTimes Varchar(20)

--要備份的資料庫名稱
SET @DBName="DBNAME"

--儲存備份檔的路徑
SET @Folder="D:\SQLBackup\"

--定義備份檔名稱,後面我加上年月日yyyymmdd
SET @DateTimes = Convert(varchar(20), GETDATE(), 112)
SET @FileName=@Folder + @DBName + '_' + @DateTimes + '.BAK'

--執行備份
BackUp Database @DBName To Disk=@FileName

.bat 設定


forfiles /p "D:\SQLBackup" /m DB_*.bak /d -14 /c "cmd /c del @path"
sleep 60s
sqlcmd -S localhost\SQLEXPRESS -E -i D:\SQLBackup\sqlbak.sql -o D:\SQLBackup\result.txt 

說明:

先刪除舊的備份檔之後,再執行備份指令

自動刪除舊的備份檔

forfiles /p "D:\SQLBackup" /m DB_*.bak /d -14 /c "cmd /c del @path"
這條命令的意思就是,搜尋「D:/SQLBackup」目錄下的任意字尾名為「bak」的檔案,檢視其日期屬性是否為14天之前的(-14表示之前, 14表示之後),然後執行刪除命令

執行「 SQL 」參數 sqlcmd -S 主機名稱\SQLEXPRESS -E -i D:\XXX.sql 記錄備份過程 -o D:\SQLBackup\result.txt

參考相關網頁: