利用 SQL Server 擴展存儲過程 xp_cmdshell 配合 Windows net share / net use 命令,可在無需專業備份軟件的情況下,實現數據庫從主服務器直接備份到遠程機器磁盤,並支持遠程還原。本文以實戰案例演示全流程操作。
| 項目 | 值 |
|---|---|
| 主服務器實例 | mainserver |
| 目標數據庫 | msdb |
| 遠程機器名 | david |
| 遠程用戶/密碼 | zf / 123 |
| 域名 | domain |
| 遠程備份目錄 | E:\test |
在遠程機器(david)執行:
net share test=E:\test
或調用 API NetShareAdd。此步驟將本地目錄發布為網絡共享 \\david\test。
在主服務器(mainserver)查詢分析器執行:
EXEC master..xp_cmdshell 'net use \\david\test 123 /user:domain\zf'
xp_cmdshell:以系統命令行方式執行字符串,需 sysadmin 權限。net use:映射網絡驅動器,建立持久連接。備份:
BACKUP DATABASE msdb TO DISK='\\david\test\msdb.bak'
還原:
RESTORE DATABASE msdb FROM DISK='\\david\test\msdb.bak'
備份文件直接寫入遠程共享路徑,無需本地落地再傳輸。
-- 刪除主服務器映射連接
EXEC master..xp_cmdshell 'net use \\david\test /delete'
-- 刪除遠程機器共享
net share test /delete
已處理 1376 頁,屬於數據庫 'msdb' 文件 'MSDBData' (文件 1)。
已處理 1 頁,屬於數據庫 'msdb' 文件 'MSDBLog' (文件 1)。
BACKUP DATABASE 成功處理 1377 頁,耗時 3.653 秒 (3.086 MB/秒)。
xp_cmdshell 僅限 sysadmin 角色調用,權限極高。xp_cmdshell(sp_configure 'xp_cmdshell', 0; RECONFIGURE)。xp_cmdshell 調用日志。本文方案適用於臨時、一次性、無高級版授權的輕量級跨機備份場景;生產核心業務請採用正規備份架構。