SQL Server備份腳本教程
這篇文章介紹了如何使用SQL Server備份腳本T-SQL命令對文件名中包含日期的 SQL 數(shù)據(jù)庫進行備份,以及如何使用計劃執(zhí)行任務。如果不夠方便,也可以使用專業(yè)的SQL備份管理工具。
這篇文章介紹了如何使用SQL Server備份腳本T-SQL命令對文件名中包含日期的 SQL 數(shù)據(jù)庫進行備份,以及如何使用計劃執(zhí)行任務。如果不夠方便,也可以使用專業(yè)的SQL備份管理工具。
使用 SSMS GUI 備份一個或兩個數(shù)據(jù)庫可能不是一個壞主意。但是,如果您在SQL Server中有大量數(shù)據(jù)庫,或者對備份結(jié)果有特定要求(例如,在文件名中包含日期/時間),那么 T-SQL 可以成為處理重復性任務的救命稻草。
在下面的文章中,我將分享我用來執(zhí)行基本數(shù)據(jù)庫備份和一些更高級任務的SQL Server備份腳本。
在繼續(xù)使用更復雜的腳本之前,讓我們先看一下基本的 DATABASE BACKUP 命令,這是使用腳本備份SQL Server的基礎。
連接到您的服務器,單擊“新建查詢”以打開 SQLQuery 窗口,然后輸入命令以“執(zhí)行”它。
對數(shù)據(jù)庫進行完整備份:
BACKUP DATABASE databasename
TO DISK = 'path\name.bak'
GO
對數(shù)據(jù)庫進行差異備份:
BACKUP DATABASE databasename
TO DISK = 'path\name.bak'
WITH DIFFERENTIAL
GO
*創(chuàng)建差異備份需要先前的完整備份。
制作數(shù)據(jù)庫的事務日志備份:
BACKUP LOG databasename
TO DISK = 'path\filename.trn'
GO
對于數(shù)據(jù)庫恢復,您可以參考從 bak 文件恢復 SQL 數(shù)據(jù)庫.
有時你可能希望經(jīng)常備份一個數(shù)據(jù)庫,并保留不同的版本以備恢復需要,如果bak文件名可以由數(shù)據(jù)庫名和備份日期組成,就很方便了。
下面是帶有日期的SQL Server備份腳本示例:
DECLARE@FileName varchar(1000)
SELECT @FileName = (SELECT 'filepath\databasename' + convert(varchar(500), GetDate(),112) + '.bak')
BACKUP DATABASE databasename TO DISK = @FileName
填寫你自己的備份路徑和數(shù)據(jù)庫名稱,你會得到一個帶日期的bak文件。
當您需要備份SQL Server的所有數(shù)據(jù)庫時,一個合適的 T-SQL 腳本可以大大減輕您的負擔。有了它,你不需要指定你要備份的數(shù)據(jù)庫,只需要排除那些你不想備份的(比如系統(tǒng)數(shù)據(jù)庫)。并且創(chuàng)建的備份文件將自動命名為數(shù)據(jù)庫名稱加日期。
這是一個例子:
DECLARE @name VARCHAR(50) -- 數(shù)據(jù)庫名
DECLARE @path VARCHAR(256) -- 備份文件路徑
DECLARE @fileName VARCHAR(256) -- 備份文件名
DECLARE @fileDate VARCHAR(20) -- 用于文件名
- - 指定數(shù)據(jù)庫備份目錄 eg 'D:\backup\'
SET @path = 'backuppath'
-- 指定文件名格式
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', '臨時數(shù)據(jù)庫') -- 排除這些數(shù)據(jù)庫
AND state = 0 -- 數(shù)據(jù)庫在線
AND is_in_standby = 0 -- 數(shù)據(jù)庫不是只讀日志傳送
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
現(xiàn)在您已經(jīng)有了SQL Server備份數(shù)據(jù)庫腳本,您可以隨時執(zhí)行它。但是,如果您需要經(jīng)常執(zhí)行它,最好使用 SQL Server 代理 自動執(zhí)行 MSSQL 備份腳本。
“注意:”此功能僅在非 Express 版本中可用。如果您是 SQL Express 用戶,請嘗試使用自動地用于備份 SQL 數(shù)據(jù)庫的批處理文件。
1. 右擊“SQL Server 代理”,選擇“新建” > “作業(yè)”
2. 在“新建作業(yè)”窗口的“常規(guī)”選項卡中,輸入作業(yè)的名稱和描述。
3. 單擊“步驟”選項卡,單擊“新建...”并為其“命名“步驟”,然后將備份腳本復制到“命令”部分并單擊“確定”。
4. 移動到計劃選項卡,您可以單擊“新建”設置自動執(zhí)行腳本的計劃。
5. 然后,單擊“確定”創(chuàng)建作業(yè)。如果沒有問題,您可以在“SQL Server 代理” > “作業(yè)”下找到新作業(yè)。它會在您設置的時間自動執(zhí)行操作,但您也可以右鍵單擊它并選擇“作業(yè)開始步驟”立即執(zhí)行。
“注意”:如果要在不更改腳本的情況下更改存儲備份的目標路徑,可以在備份之前指定一個邏輯sql server 中的備份設備,然后在要更改它時重新定義它。
一旦你有了一個有效的腳本,SQL Server數(shù)據(jù)庫的備份工作就會變得容易得多。但是,此方法也有一些限制:
為了彌補這些不足,可以使用SQL數(shù)據(jù)庫備份軟件,如傲梅企業(yè)備份網(wǎng)絡版. 操作非常簡單,具有同時備份多個數(shù)據(jù)庫、定時自動備份、恢復多個數(shù)據(jù)庫等功能。
下載180天免費試用版試用:
1. 企業(yè)備份網(wǎng)絡版設置完成后,您可以使用它在客戶端安裝“代理程序包,并”“請求控制”您要管理的計算機。
然后,切換到“主頁”選項卡并選擇SQL Server備份開始。
2、在“步驟1”中點擊“+添加計算機”,檢測到被SQL Server控制的客戶端計算機,選擇需要備份的計算機。
3. 在“步驟2”中,點擊+ 添加以檢測所選機器上的實例。在彈出的窗口中,您可以選擇多個數(shù)據(jù)庫甚至多個實例進行備份。
4. 在步驟 3中,單擊“添加存儲”指定目標路徑。添加的網(wǎng)絡共享或 NAS 將被保存以備后用。
5. 或者,您可以設置一個“計劃”來自動備份,并選擇執(zhí)行完整或差異備份。然后單擊“開始備份”以執(zhí)行任務。備份完成后,您可以直接選擇要恢復的任務。
與 SSMS GUI 相比,SQL Server備份腳本允許進行一些更復雜和自定義的備份操作。但如果您不熟悉T-SQL命令,或者想更直觀地進行備份和恢復,您也可以使用傲梅企業(yè)備份網(wǎng)絡版,集中數(shù)據(jù)管理解決方案。
它不僅適用于本地計算機,還適用于局域網(wǎng)內(nèi)的所有臺式機、筆記本電腦、工作站和服務器。所以你可以集中安排備份,并且將SQL 數(shù)據(jù)庫恢復到另一臺服務器隨你便。