因服務器安裝的SQL Server版本不支持自動定時備份,需自行實作,大概思路為:
- 創建備份資料庫的腳本
- 創建批處理腳本執行步驟一中的腳本
- 創建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檔案,填入以下內容,
sqlcmd -S localhost -U sa -P 123 -i ./db_backup.sql -o ./db_backup.log
以下為使用到的各個選項的解釋:
sqlcmd -S <資料庫連接地址> -U <資料庫登錄名> -P <資料庫密碼> -i <要執行的腳本檔案> -o <執行日志檔案>
更多選項請執行sqlcmd -?查看或者查看:sqlcmd 實用工具,
雙擊執行批處理檔案,如果沒有報錯且正常輸出日志檔案,則說明批處理腳本創建成功,
3. 創建Windows任務計劃
使用win+r快捷鍵打開運行對話框,輸入taskschd.msc打開任務計劃程式對話框,點擊創建任務,依次進行以下步驟:
- 輸入任務名稱
- 如果是服務器環境,安全選項中務必選擇不管用戶是否登錄都要運行
- 新建觸發器
- 設定觸發器為按預定計劃執行一次
- 在觸發器高級設定中選擇重復任務間隔根據需要設定,持續時間設定為無限期,這樣配置的結果就是在觸發后,無限期地每隔xx時間段重復一次
- 新建操作
- 選擇剛才新建的批處理腳本
- 檢查批處理腳本中是否包含有關目錄結構的陳述句,比如需要讀寫某個位置的檔案,如果有且是Windows Server 2012及以后的作業系統,就需要配置起始位置,起始位置設定為批處理的目錄即可,



完成以上步驟后即創建任務成功,然后選中新創建的任務,點擊右鍵選擇運行,可測驗任務是否可正常執行,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/273569.html
標籤:SQL Server
