SQL Server使用腳本實現自動備份

因服務器安裝的SQL Server版本不支持自動定時備份,需自行實現,大概思路爲:sql

  1. 建立備份數據庫的腳本
  2. 建立批處理腳本執行步驟一中的腳本
  3. 建立Windows定時任務執行步驟二中的腳本

1. 建立SQL腳本

新建db_backup.sql文件,填入如下內容。數據庫

-- 定義須要備份的數據庫
DECLARE @backupDatabase VARCHAR(20) = 'DB_NAME'

-- 定義數據庫備份文件存放的基礎路徑
DECLARE @backupBasePath VARCHAR(MAX) = 'D:/DB_NAME/'

-- 定義備份文件名,文件名格式:<db>_backup_<yyyymmdd>_<hh:mm:ss.sss>.bak
DECLARE @backupFileName VARCHAR(50) = NULL

-- 獲取當前時間戳
DECLARE @backupTime DATETIME = CURRENT_TIMESTAMP

-- 處理備份文件名稱
SET @backupFileName = @backupDatabase + '_backup_' + CONVERT(VARCHAR(25), @backupTime, 112) + '_' + REPLACE(CONVERT(VARCHAR(25), CURRENT_TIMESTAMP, 114), ':', '') + '.bak'

-- 處理完整的備份文件路徑
SET @backupBasePath = @backupBasePath + @backupFileName

-- 執行備份
BACKUP DATABASE @backupDatabase TO DISK = @backupBasePath

腳本內容比較簡單,這裏就不展開說了。詳情可查看:BACKUP (Transact-SQL)安全

到這裏已經能夠使用腳本對數據庫進行備份,但仍需手動執行腳本,沒法實現自動定時備份的需求。服務器

2. 建立批處理腳本

新建db_backup.bat文件,填入如下內容。ide

sqlcmd -S localhost -U sa -P 123 -i ./db_backup.sql -o ./db_backup.log	

如下爲使用到的各個選項的解釋:工具

sqlcmd -S <數據庫鏈接地址> -U <數據庫登陸名> -P <數據庫密碼> -i <要執行的腳本文件> -o <執行日誌文件>

更多選項請執行sqlcmd -?查看或者查看:sqlcmd 實用工具測試

雙擊執行批處理文件,若是沒有報錯且正常輸出日誌文件,則說明批處理腳本建立成功。url

3. 建立Windows任務計劃

使用win+r快捷鍵打開運行對話框,輸入taskschd.msc打開任務計劃程序對話框,點擊建立任務,依次進行如下步驟:操作系統

  1. 輸入任務名稱
  2. 若是是服務器環境,安全選項中務必選擇無論用戶是否登陸都要運行
  3. 新建觸發器
  4. 設置觸發器爲按預約計劃執行一次
  5. 在觸發器高級設置中選擇重複任務間隔根據須要設置,持續時間設置爲無限期。這樣配置的結果就是在觸發後,無限期地每隔xx時間段重複一次
  6. 新建操做
  7. 選擇剛纔新建的批處理腳本
  8. 檢查批處理腳本中是否包含有關目錄結構的語句,好比須要讀寫某個位置的文件。若是有且是Windows Server 2012及之後的操做系統,就須要配置起始位置,起始位置設置爲批處理的目錄便可。

建立任務01

建立任務02

建立任務03

完成以上步驟後即建立任務成功,而後選中新建立的任務,點擊右鍵選擇運行,可測試任務是否可正常執行。.net

相關文章
相關標籤/搜索