SQL server實現(xiàn)異地增量備份和全量備份的幾種方法實現(xiàn)
要將SQL Server數(shù)據(jù)庫通過作業(yè)備份到同一局域網(wǎng)的另一臺服務器,需要完成共享目錄配置、權(quán)限設置和作業(yè)創(chuàng)建三個核心步驟。以下是詳細操作指南:
一、目標服務器(備份存儲服務器)配置
在局域網(wǎng)內(nèi)的目標服務器(如172.70.74.211)上創(chuàng)建共享目錄,用于存放備份文件。
1. 創(chuàng)建本地文件夾
- 在目標服務器上新建文件夾(例如
D:\SQLBackups),用于實際存儲備份文件。
2. 配置共享權(quán)限
- 右鍵文件夾 → 屬性 → 共享→高級共享→ 勾選“共享此文件夾”。
- 共享名設為
SQLBackups(后續(xù)訪問路徑為\\172.70.74.211\SQLBackups)。 - 點擊權(quán)限→ 添加
Everyone或指定用戶(如Administrator),并授予“讀取”和“寫入”權(quán)限。 - 切換到安全標簽頁 → 確保相同用戶有“完全控制”權(quán)限(避免NTFS權(quán)限與共享權(quán)限沖突)。
3. 測試共享訪問
- 在SQL Server所在服務器的“運行”中輸入
\\172.70.74.211\SQLBackups,驗證能否正常訪問(無需輸入密碼或使用目標服務器賬號登錄)。
二、SQL Server服務器配置
確保SQL Server服務賬戶有權(quán)限訪問目標服務器的共享目錄。
1. 確認SQL Server服務賬戶
- 打開“服務” → 找到
SQL Server (MSSQLSERVER)→ 查看“登錄身份”(通常是NT Service\MSSQLSERVER或域賬戶)。
2. 授予服務賬戶訪問權(quán)限(可選)
- 如果服務賬戶是本地賬戶(如
NT Service\MSSQLSERVER),需在目標服務器的共享目錄權(quán)限中添加SQL Server服務器的計算機賬戶(格式:域\SQL服務器名$,例如WORKGROUP\SQLSERVER$),并授予讀寫權(quán)限。 - 如果是域賬戶,直接在目標服務器共享權(quán)限中添加該域賬戶即可。
三、創(chuàng)建備份作業(yè)
通過SQL Server代理創(chuàng)建定時備份作業(yè),自動將數(shù)據(jù)庫備份到目標服務器的共享目錄。
1. 啟用SQL Server代理
- 打開SQL Server Management Studio (SSMS) → 連接到數(shù)據(jù)庫引擎 → 確保“SQL Server代理”已啟動(右鍵→“啟動”)。
2. 創(chuàng)建新作業(yè)
- 展開“SQL Server代理” → 右鍵“作業(yè)” →新建作業(yè)。
- 名稱:
數(shù)據(jù)庫異地備份。 - 所有者:保持默認(
sa)。 - 類別:選擇“數(shù)據(jù)庫維護”。
- 名稱:

3. 添加作業(yè)步驟
切換到步驟→新建:
- 步驟名稱:
執(zhí)行備份。 - 類型:
Transact-SQL (T-SQL)。 - 數(shù)據(jù)庫:選擇要備份的數(shù)據(jù)庫(如
AIS20250224105414)。 - 命令:輸入以下T-SQL腳本(替換為實際路徑和數(shù)據(jù)庫名):

- 步驟名稱:
步驟1
-- 步驟1:建立Administrator網(wǎng)絡連接 DECLARE @SharePath NVARCHAR(100), @User NVARCHAR(100), @Pwd NVARCHAR(50), @Cmd NVARCHAR(4000) -- 定義變量值(單獨賦值,避免復雜拼接) SET @SharePath = '\\172.70.74.211\SQLBackups' SET @User = '172.70.74.211\Administrator' SET @Pwd = '123456' -- 替換為實際密碼 -- 創(chuàng)建臨時表存儲命令結(jié)果(用#臨時表替代@表變量,避免作用域問題) CREATE TABLE #Result (OutputText NVARCHAR(4000)) -- 1. 斷開舊連接 SET @Cmd = 'net use "' + @SharePath + '" /delete /y' DELETE FROM #Result INSERT INTO #Result EXEC master.dbo.xp_cmdshell @Cmd -- 2. 建立新連接(用雙引號包裹路徑和參數(shù),兼容特殊字符) SET @Cmd = 'net use "' + @SharePath + '" /user:' + @User + ' "' + @Pwd + '"' DELETE FROM #Result INSERT INTO #Result EXEC master.dbo.xp_cmdshell @Cmd -- 3. 輸出連接命令執(zhí)行結(jié)果(用于排查錯誤) PRINT '=== 網(wǎng)絡連接命令執(zhí)行結(jié)果 ===' SELECT OutputText AS 執(zhí)行結(jié)果 FROM #Result WHERE OutputText IS NOT NULL -- 4. 驗證共享目錄是否可訪問 SET @Cmd = 'dir "' + @SharePath + '"' DELETE FROM #Result INSERT INTO #Result EXEC master.dbo.xp_cmdshell @Cmd -- 5. 判斷連接狀態(tài) IF EXISTS (SELECT 1 FROM #Result WHERE OutputText LIKE '%<DIR>%') BEGIN PRINT '=== 連接成功 ===' PRINT '已成功訪問共享目錄:' + @SharePath END ELSE BEGIN PRINT '=== 連接失敗 ===' RAISERROR('無法訪問共享目錄,請檢查共享名、賬號密碼或權(quán)限', 16, 1) RETURN END -- 刪除臨時表 DROP TABLE #Result步驟2
-- 步驟2:執(zhí)行備份 DECLARE @BackupType VARCHAR(10), @BackupPath NVARCHAR(255), @BackupName NVARCHAR(255), @WeekDay INT; -- 獲取當前星期幾(1=周一,7=周日) SET @WeekDay = DATEPART(WEEKDAY, GETDATE()); -- 判定備份類型 IF @WeekDay = 7 OR NOT EXISTS ( -- 檢查是否存在全量備份(首次執(zhí)行時無全量,強制全量) SELECT 1 FROM msdb.dbo.backupset WHERE database_name = 'AIS20250224105414' AND type = 'D' -- 'D'表示全量備份 ) BEGIN SET @BackupType = 'Full'; SET @BackupName = N'ERP全量備份'; END ELSE BEGIN SET @BackupType = 'Diff'; SET @BackupName = N'ERP增量備份'; END -- 構(gòu)建備份路徑 SET @BackupPath = N'\\172.70.74.211\SQLBackups\AIS20250224105414_' + @BackupType + '_' + CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak'; -- 執(zhí)行對應類型的備份 IF @BackupType = 'Full' BEGIN BACKUP DATABASE [AIS20250224105414] TO DISK = @BackupPath WITH INIT, -- 全量備份覆蓋同名文件 NAME = @BackupName, SKIP, NOREWIND, NOUNLOAD, STATS = 10; END ELSE BEGIN BACKUP DATABASE [AIS20250224105414] TO DISK = @BackupPath WITH DIFFERENTIAL, -- 增量備份關(guān)鍵參數(shù) NOINIT, -- 增量備份不覆蓋,追加到備份集 NAME = @BackupName, SKIP, NOREWIND, NOUNLOAD, STATS = 10; END PRINT '備份完成!類型:' + @BackupType + ',路徑:' + @BackupPath;步驟3
-- 步驟3:斷開網(wǎng)絡連接 DECLARE @SharePath NVARCHAR(100), @Cmd NVARCHAR(4000) -- 設置共享路徑 SET @SharePath = '\\172.70.74.211\SQLBackups' -- 構(gòu)建完整命令(用雙引號包裹路徑,避免特殊字符問題) SET @Cmd = 'net use "' + @SharePath + '" /delete /y' -- 執(zhí)行斷開連接命令 EXEC master.dbo.xp_cmdshell @Cmd -- 輸出結(jié)果 PRINT '網(wǎng)絡連接已斷開:' + @SharePath
4. 配置作業(yè)調(diào)度
切換到調(diào)度→新建:
- 名稱:
每日備份。 - 調(diào)度類型:
重復執(zhí)行。 - 頻率:例如“每天”、“凌晨2點”。
- 點擊“確定”保存調(diào)度。

5. 測試作業(yè)
右鍵新建的作業(yè) →執(zhí)行步驟→ 選擇“執(zhí)行備份” → 檢查目標服務器共享目錄是否生成備份文件。


四、常見問題解決
“無法訪問網(wǎng)絡路徑”錯誤
- 檢查共享目錄路徑是否正確(如
\\172.70.74.211\SQLBackups)。 - 驗證SQL Server服務賬戶是否有訪問權(quán)限(參考步驟二)。
- 關(guān)閉目標服務器防火墻或添加文件共享例外(端口139、445)。
- 檢查共享目錄路徑是否正確(如
備份文件為空或大小異常
- 檢查T-SQL腳本中的
BACKUP DATABASE語句是否正確。 - 確認數(shù)據(jù)庫處于正常狀態(tài)(非離線或恢復中)。
- 檢查T-SQL腳本中的
作業(yè)執(zhí)行失敗無日志
- 在作業(yè)屬性的通知中,勾選“當作業(yè)失敗時寫入Windows事件日志”,通過“事件查看器”排查詳細錯誤。
通過以上步驟,即可實現(xiàn)SQL Server數(shù)據(jù)庫自動備份到局域網(wǎng)內(nèi)的另一臺服務器,確保數(shù)據(jù)安全和異地存儲。
到此這篇關(guān)于SQL server實現(xiàn)異地增量備份和全量備份的幾種方法實現(xiàn)的文章就介紹到這了,更多相關(guān)SQL 異地增量備份和全量備份內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
公網(wǎng)遠程訪問局域網(wǎng)SQL Server數(shù)據(jù)庫
數(shù)據(jù)庫的重要性相信大家都有所了解,在某些場景下,數(shù)據(jù)庫已經(jīng)成為企業(yè)正常運行必不可少的條件之一。與企業(yè)的其他工作一樣,數(shù)據(jù)庫也需要進行必要的維護,想詳細了解的同學可以參考這篇文章2023-04-04
insert into select和select into的使用和區(qū)別介紹
insert into ... select 和 select ... into的使用上有哪些區(qū)別呢?在本文將為大家下詳細介紹下,不知道的朋友可以了解下2013-09-09
sqlserver數(shù)據(jù)庫服務器讀寫性能之陣列RAID對比簡介
這篇文章主要考慮sqlserver數(shù)據(jù)庫服務器的讀寫性能優(yōu)化之陣列raid的對比分析,需要的朋友可以參考下2024-04-04
SQL Server數(shù)據(jù)誤刪的恢復和備份流程
在日常的數(shù)據(jù)庫管理中,數(shù)據(jù)的誤刪操作是難以避免的,為了確保數(shù)據(jù)的安全性和完整性,我們必須采取一些措施來進行數(shù)據(jù)的備份和恢復,本文將詳細介紹如何在 SQL Server 中進行數(shù)據(jù)的備份和恢復操作,特別是在發(fā)生數(shù)據(jù)誤刪的情況下,需要的朋友可以參考下2024-07-07
Sql語句與存儲過程查詢數(shù)據(jù)的性能測試實現(xiàn)代碼
Sql語句 存儲過程查 性能測試對比代碼。2009-04-04

