採用「批次檔 + T-SQL 腳本 + Windows 工作排程器」三層架構,零第三方工具,輕量可靠。
mybackup.bat@echo off REM 擴充 PATH 確保找到 isql.exe (SQL 2000) 或 sqlcmd.exe (2005+) set PATH=%PATH%;C:\Program Files\Microsoft SQL Server\80\Tools\Binn REM 記錄開始時間 echo 資料庫備份開始 >> E:\DataBaseBAK\任務計劃完成記錄.txt date /t >> E:\DataBaseBAK\任務計劃完成記錄.txt time /t >> E:\DataBaseBAK\任務計劃完成記錄.txt REM 執行 T-SQL 備份腳本 REM -S 伺服器 -U 登入 -P 密碼 -i 輸入檔 isql.exe -S 127.0.0.1 -U sa -P sa -i mybackup.sql REM 記錄結束時間 echo 資料庫備份完成 >> E:\DataBaseBAK\任務計劃完成記錄.txt date /t >> E:\DataBaseBAK\任務計劃完成記錄.txt time /t >> E:\DataBaseBAK\任務計劃完成記錄.txt echo. echo. echo. echo 資料庫備份完成 echo. echo. REM pause
mybackup.sqlDECLARE @name VARCHAR(50) = 'V5HQS'; -- 資料庫名稱 DECLARE @datetime CHAR(14) = CONVERT(CHAR(8), GETDATE(), 112) + REPLACE(CONVERT(CHAR(8), GETDATE(), 108), ':', ''); DECLARE @path VARCHAR(255) = 'E:\DataBaseBAK'; DECLARE @bakfile VARCHAR(255) = @path + '\' + @name + '_bak_' + @datetime + '.BAK'; BACKUP DATABASE @name TO DISK = @bakfile WITH NAME = @name, INIT, STATS = 10; GO
mybackup.bat、mybackup.sql 放置同一目錄(如 E:\BackupScripts\)。E:\BackupScripts\mybackup.bat,起始位置填 E:\BackupScripts\。sysadmin 權限的專用服務帳號執行,避免硬編碼 sa 密碼;生產環境請改用 sqlcmd 搭配 Windows 驗證(-E)。VERIFYONLY 檢查備份檔完整性。xp_cmdshell 或 PowerShell 實現備份檔壓縮、異地複製、保留天數清理。sqlcmd -Q "BACKUP DATABASE ..." 單行完成,免維護額外 .sql 檔。