如何在文件名中備份帶有日期的 SQL 數(shù)據(jù)庫?
如何在文件名中備份帶有日期的 SQL 數(shù)據(jù)庫?以下是一些被證明有效的腳本,以及自動化它們的步驟?;蛘撸梢試L試更簡單的替代方案。
如何在文件名中備份帶有日期的 SQL 數(shù)據(jù)庫?以下是一些被證明有效的腳本,以及自動化它們的步驟?;蛘撸梢試L試更簡單的替代方案。
我正在創(chuàng)建一個 SQL 查詢腳本來備份數(shù)據(jù)庫,我做得很好。但現(xiàn)在我被要求在 .bak 文件的末尾添加日期和時間戳。關(guān)于如何完成的任何想法?
通常您可以在使用 SSMS GUI 或 T-SQL 備份數(shù)據(jù)庫時自己指定文件名。但是如果有大量的數(shù)據(jù)庫,或者你想定期執(zhí)行備份任務(wù)并保留不同版本的bak文件(例如,在SQL Server中創(chuàng)建具有唯一名稱的每日數(shù)據(jù)庫備份。),您可能需要一種更自動化和更智能的方式實現(xiàn)文件名中備份帶有日期的 SQL 數(shù)據(jù)庫。
為此,最常用的方法是使用有效的 T-SQL 腳本?;蛘撸梢允褂眉泄芾砉ぞ邅韺崿F(xiàn)SQL Server中創(chuàng)建具有唯一名稱的每日數(shù)據(jù)庫備份。
繼續(xù)閱讀并選擇您喜歡的方式:
要備份一個帶有日期的特定 SQL數(shù)據(jù)庫,您可以使用文件名中帶有日期的 SQL 備份命令,例如:
DECLARE @FileName varchar(1000)
SELECT @FileName = (SELECT
'filepath\databasename' + convert(varchar(500), GetDate(),112) + '.bak')
BACKUP DATABASE databasename TO
DISK=@FileName
填寫您自己的備份路徑和數(shù)據(jù)庫名稱,并將腳本復(fù)制到新的查詢窗口。執(zhí)行后,您將獲得一個名稱由數(shù)據(jù)庫和備份日期組成的 bak 文件。
在很多情況下,您可能希望備份的不僅僅是一兩個數(shù)據(jù)庫,而是一個實例的所有數(shù)據(jù)庫,那么以下腳本可以為您節(jié)省大量時間:
DECLARE @name VARCHAR(50) -- database name
DECLARE
@path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for
backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify database backup
directory e.g. 'D:\backup\'
SET @path = 'backuppath'
-- specify filename format
SELECT
@fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + '_' +
REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
DECLARE db_cursor CURSOR READ_ONLY
FOR
SELECT name
FROM master.sys.databases
WHERE name NOT IN
('master','model','msdb','tempdb') -- exclude these databases
AND state = 0 -- database is
online
AND is_in_standby = 0 -- database is not read only for log shipping
OPEN
db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS =
0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP
DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO
@name
END
CLOSE db_cursor
DEALLOCATE db_cursor
執(zhí)行該命令,它將在SQL備份文件名中添加日期。您還可以排除您不想備份的其他數(shù)據(jù)庫。
現(xiàn)在您已經(jīng)知道如何執(zhí)行 SQL 備份并將日期添加到文件名。這是另一種可能的情況:您希望自動化操作,例如在SQL Server中創(chuàng)建具有唯一名稱的每日數(shù)據(jù)庫備份,但僅使用腳本很難實現(xiàn)這一點。因此,您可以使用SQL Server代理。
使用此工具,您可以為某些 T-SQL 命令添加計劃,但請注意,它僅在SQL Server的非 Express 版本中可用。
1. 確保啟用了SQL Server代理,否則,您需要右鍵單擊它并“啟動”它。然后選擇New > 作業(yè)...開始。
2. 在“步驟”選項卡中,單擊新建...并輸入“步驟名稱”。然后您可以將您想要自動化的腳本復(fù)制到“命令”部分,然后單擊“確定”進(jìn)行確認(rèn)。
3. 現(xiàn)在移動到“定時任務(wù)”s選項卡,單擊“新建”為您剛剛輸入的備份腳本設(shè)置新的計劃。
4. 單擊“確定”創(chuàng)建作業(yè)。然后您可以在SQL Server 代理 > “作業(yè)”下找到新作業(yè),然后選擇“作業(yè)開始步驟”立即對其進(jìn)行測試。
如前所述,SQL Server 代理不適用于 Express 版本。如果這是你的情況,也許你可以嘗試批處理文件和 Windows 任務(wù)計劃程序的組合。
打開您的文本編輯器,將備份命令復(fù)制到其中。注意用于備份 SQL數(shù)據(jù)庫的批處理腳本這里與 SSMS 中使用的 T-SQL 腳本不同,你可以試試這個:
@ECHO OFF
SETLOCAL
REM 獲取格式為 YYYY-MM-DD
FOR /F
"tokens=1,2,3,4 delims=/ " %%A IN ('Date /T') DO SET NowDate=%%D- 的日期%%B-%%C
REM
建立要備份的數(shù)據(jù)庫列表
SET DBList=D:\DBList.txt
SqlCmd -E -S DESKTOP-AC51C0M\MSSQLSERVER_01 -h-1 -W -Q "SET NoCount
ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN ('master','model','msdb','tempdb')" >
"%DBList%"
REM 備份每個數(shù)據(jù)庫,將日期添加到文件名
FOR /F " tokens=*" %%I IN (%DBList%) DO (
ECHO
備份數(shù)據(jù)庫:%%I
SqlCmd -E -S DESKTOP-AC51C0M\MSSQLSERVER_01 -Q "BACKUP DATABASE [%%I] TO
Disk='D:\備份\%%I-%NowDate%.bak'"
ECHO。)
REM 清理臨時文件
IF EXIST "%DBList%" DEL /F /Q
"%DBList%"
ENDLOCAL
將文本另存為批處理文件(擴(kuò)展名為 .bat)。因此,每次雙擊它時,該腳本都會備份所有帶有文件名日期的 SQL數(shù)據(jù)庫。
要自動執(zhí)行任務(wù),您需要通過 Windows 搜索欄或通過以下路徑訪問任務(wù)計劃程序:控制窗格(小圖標(biāo)/大圖標(biāo))> 管理員工具 > 任務(wù)計劃程序。
通過使用此工具,您可以創(chuàng)建基本任務(wù),設(shè)置觸發(fā)器(計劃),并將操作設(shè)置為啟動程序(即您創(chuàng)建的批處理文件)。之后,任務(wù)將按計劃自動執(zhí)行。
在文件名中備份帶有日期的 SQL 數(shù)據(jù)庫主要好處是“保留和識別不同版本的備份”,以便 SQL數(shù)據(jù)庫可以在需要時恢復(fù)到準(zhǔn)確的日期。為此,您還可以使用更簡單的 SQL 備份管理工具,例如傲梅企業(yè)備份網(wǎng)絡(luò)版.
它允許您按計劃自動備份 SQL Server,并準(zhǔn)確地將數(shù)據(jù)庫恢復(fù)到任何日期的先前版本(完整或差異)。有了它,您無需使用復(fù)雜的 T-SQL 命令或費心區(qū)分備份文件。所有的操作都可以通過簡單的點擊來完成。
作為一個集中備份工具,它不僅適用于您的計算機(jī),還支持局域網(wǎng)內(nèi)的所有 Windows PC 和服務(wù)器。下載180天免費試用版進(jìn)行嘗試:
正確安裝軟件后,您可以在您要管理的所有客戶端計算機(jī)上安裝代理程序包。在創(chuàng)建集中備份任務(wù)之前“請求控制它們”。
步驟 1。在傲梅企業(yè)備份網(wǎng)絡(luò)版中,導(dǎo)航到"任務(wù)" > "新任務(wù)" > "SQL Server備份"。
步驟 2.單擊+ 添加計算機(jī)以檢測具有SQL Server數(shù)據(jù)庫的計算機(jī),然后從列表中選擇一臺計算機(jī)進(jìn)行備份。
步驟 3。單擊+ 添加以檢測所選計算機(jī)上的實例。您可以選擇任何您想要的數(shù)據(jù)庫,甚至可以一次選擇所有數(shù)據(jù)庫。
第 4 步。單擊“添加存儲”以指定目標(biāo)路徑。添加的網(wǎng)絡(luò)共享或 NAS 將被保存以供您將來直接使用。然后單擊“開始備份”以執(zhí)行任務(wù)。
? 您還可以設(shè)置“計劃以自動執(zhí)行任務(wù),并在”“高級”選項卡中選擇完整備份或差異備份。創(chuàng)建的備份文件將保存在具有相應(yīng)日期的文件夾中。
? 當(dāng)您想從備份中恢復(fù)時,只需在““任務(wù)””選項卡中找到任務(wù),然后從右上角的菜單中選擇“恢復(fù)”即可。
? 您可以選擇要還原的備份日期,或者具體要還原備份中的哪些數(shù)據(jù)庫。
為便于管理和準(zhǔn)確恢復(fù),您可能希望在文件名中備份帶有日期的 SQL 數(shù)據(jù)庫,這通??梢酝ㄟ^ T-SQL 命令來完成。
但是,如果您不想使用腳本,或者發(fā)現(xiàn)自動化任務(wù)很復(fù)雜,傲梅企業(yè)備份網(wǎng)絡(luò)版版是一個值得嘗試的替代方案。它使備份多個數(shù)據(jù)庫、計劃備份、將數(shù)據(jù)庫恢復(fù)到某個日期變得更容易,甚至允許您將 SQL數(shù)據(jù)庫恢復(fù)到另一臺服務(wù)器直接地。