SQL Server使用腳本實(shí)現(xiàn)自動(dòng)備份的思路詳解
因服務(wù)器安裝的SQL Server版本不支持自動(dòng)定時(shí)備份,需自行實(shí)現(xiàn),大概思路為:
- 創(chuàng)建備份數(shù)據(jù)庫(kù)的腳本
- 創(chuàng)建批處理腳本執(zhí)行步驟一中的腳本
- 創(chuàng)建Windows定時(shí)任務(wù)執(zhí)行步驟二中的腳本
1. 創(chuàng)建SQL腳本
新建db_backup.sql
文件,填入以下內(nèi)容。
-- 定義需要備份的數(shù)據(jù)庫(kù) DECLARE @backupDatabase VARCHAR(20) = 'DB_NAME' -- 定義數(shù)據(jù)庫(kù)備份文件存放的基礎(chǔ)路徑 DECLARE @backupBasePath VARCHAR(MAX) = 'D:/DB_NAME/' -- 定義備份文件名,文件名格式:<DB>_backup_<yyyyMMdd>_<HH:mm:ss.SSS>.bak DECLARE @backupFileName VARCHAR(50) = NULL -- 獲取當(dāng)前時(shí)間戳 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 -- 執(zhí)行備份 BACKUP DATABASE @backupDatabase TO DISK = @backupBasePath
腳本內(nèi)容比較簡(jiǎn)單,這里就不展開說(shuō)了。詳情可查看:BACKUP (Transact-SQL)。
到這里已經(jīng)可以使用腳本對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份,但仍需手動(dòng)執(zhí)行腳本,無(wú)法實(shí)現(xiàn)自動(dòng)定時(shí)備份的需求。
2. 創(chuàng)建批處理腳本
新建db_backup.bat
文件,填入以下內(nèi)容。
sqlcmd -S localhost -U sa -P 123 -i ./db_backup.sql -o ./db_backup.log
以下為使用到的各個(gè)選項(xiàng)的解釋:
sqlcmd -S <數(shù)據(jù)庫(kù)連接地址> -U <數(shù)據(jù)庫(kù)登錄名> -P <數(shù)據(jù)庫(kù)密碼> -i <要執(zhí)行的腳本文件> -o <執(zhí)行日志文件>
更多選項(xiàng)請(qǐng)執(zhí)行sqlcmd -?
查看或者查看:sqlcmd 實(shí)用工具。
雙擊執(zhí)行批處理文件,如果沒(méi)有報(bào)錯(cuò)且正常輸出日志文件,則說(shuō)明批處理腳本創(chuàng)建成功。
3. 創(chuàng)建Windows任務(wù)計(jì)劃
使用win
+r
快捷鍵打開運(yùn)行對(duì)話框,輸入taskschd.msc
打開任務(wù)計(jì)劃程序對(duì)話框,點(diǎn)擊創(chuàng)建任務(wù),依次進(jìn)行以下步驟:
- 輸入任務(wù)名稱
- 如果是服務(wù)器環(huán)境,安全選項(xiàng)中務(wù)必選擇不管用戶是否登錄都要運(yùn)行
- 新建觸發(fā)器
- 設(shè)置觸發(fā)器為按預(yù)定計(jì)劃執(zhí)行一次
- 在觸發(fā)器高級(jí)設(shè)置中選擇重復(fù)任務(wù)間隔根據(jù)需要設(shè)置,持續(xù)時(shí)間設(shè)置為無(wú)限期。這樣配置的結(jié)果就是在觸發(fā)后,無(wú)限期地每隔xx時(shí)間段重復(fù)一次
- 新建操作
- 選擇剛才新建的批處理腳本
- 檢查批處理腳本中是否包含有關(guān)目錄結(jié)構(gòu)的語(yǔ)句,比如需要讀寫某個(gè)位置的文件。如果有且是Windows Server 2012及以后的操作系統(tǒng),就需要配置起始位置,起始位置設(shè)置為批處理的目錄即可。
完成以上步驟后即創(chuàng)建任務(wù)成功,然后選中新創(chuàng)建的任務(wù),點(diǎn)擊右鍵選擇運(yùn)行,可測(cè)試任務(wù)是否可正常執(zhí)行。
到此這篇關(guān)于SQL Server使用腳本實(shí)現(xiàn)自動(dòng)備份的思路詳解的文章就介紹到這了,更多相關(guān)sqlserver自動(dòng)備份內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL 雙親節(jié)點(diǎn)查找所有子節(jié)點(diǎn)的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇SQL 雙親節(jié)點(diǎn)查找所有子節(jié)點(diǎn)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05sql存儲(chǔ)過(guò)程實(shí)例--動(dòng)態(tài)根據(jù)表數(shù)據(jù)復(fù)制一個(gè)表的數(shù)據(jù)到另一個(gè)表
這篇文章主要介紹了sql存儲(chǔ)過(guò)程實(shí)例--動(dòng)態(tài)根據(jù)表數(shù)據(jù)復(fù)制一個(gè)表的數(shù)據(jù)到另一個(gè)表的相關(guān)資料,需要的朋友可以參考下2017-10-10在SQL觸發(fā)器或存儲(chǔ)過(guò)程中獲取在程序登錄的用戶
每個(gè)用戶可以登錄系統(tǒng),在程序中操作數(shù)據(jù)(添加,更新和刪除)需要實(shí)現(xiàn)記錄操作跟蹤。是誰(shuí)添加,更新和刪除的,這些信息將會(huì)插入至AuditLog表中2012-01-01sqlserver 自動(dòng)備份所有數(shù)據(jù)庫(kù)的SQL
可自動(dòng)備份除系統(tǒng)數(shù)據(jù)庫(kù)外的所有數(shù)據(jù)庫(kù)。備份文件的周期保存周期可以更改。2010-03-03SQL?Server縱表轉(zhuǎn)橫表的實(shí)現(xiàn)示例
在使用SQL?Server數(shù)據(jù)庫(kù)的過(guò)程中我們經(jīng)常會(huì)遇到需要將查詢結(jié)果從縱表轉(zhuǎn)成橫表的問(wèn)題,本文就來(lái)介紹一下SQL?Server縱表轉(zhuǎn)橫表示例,感興趣的可以了解一下2023-12-12刪除sqlserver數(shù)據(jù)庫(kù)日志和沒(méi)有日志的數(shù)據(jù)庫(kù)恢復(fù)辦法
這篇文章主要介紹了刪除sqlserver數(shù)據(jù)庫(kù)日志和沒(méi)有日志的數(shù)據(jù)庫(kù)恢復(fù)辦法,需要的朋友可以參考下2014-06-06根據(jù)多條件查詢臨時(shí)表 想得到不同結(jié)果集的方法
很多情況下,需要采用多個(gè)參數(shù)來(lái)查詢一張臨時(shí)表,每個(gè)參數(shù)都要求得到不同的臨時(shí)表結(jié)果集。而往往某些參數(shù)并不對(duì)應(yīng)這張臨時(shí)表中的字段,而是對(duì)應(yīng)與該臨時(shí)表ID關(guān)聯(lián)的另一張表的字段。2009-11-11SQL Server無(wú)法生成FRunCM線程的解決方法
這篇文章主要介紹了SQL Server無(wú)法生成FRunCM線程,請(qǐng)查看SQL Server 錯(cuò)誤日志和 Windows 事件日志,解決方法就在下面2013-11-11