透過 SQL Server Agent 作業 搭配 存儲過程,可建立靈活、免維運的資料庫自動備份機制,支援依日期動態產生檔名、條件式備份(如特定日期區間)等進階需求。
CREATE PROCEDURE dbo.usp_AutoBackup
AS
BEGIN
SET NOCOUNT ON;
DECLARE @FileName NVARCHAR(200),
@DayOfMonth INT = DAY(GETDATE());
-- 動態檔名:F:\Backup\DB_YYYYMMDD.bak
SET @FileName = N'F:\Backup\DB_' + CONVERT(CHAR(8), GETDATE(), 112) + N'.bak';
-- 條件:每月 20 號至次月 10 號才備份(示例業務規則)
IF @DayOfMonth >= 20 OR @DayOfMonth <= 10
BEGIN
PRINT '執行備份:' + @FileName;
BACKUP DATABASE [YourDB] TO DISK = @FileName
WITH INIT, NOUNLOAD, NAME = N'AutoBackup', NOSKIP, STATS = 10, NOFORMAT;
END
ELSE
PRINT '非備份時段,略過。';
END
sa(或具備 sysadmin 的帳號)。Transact-SQL → 資料庫選目標 DB → 指令輸入 EXEC usp_AutoBackup。sys.databases。xp_delete_file 或 PowerShell 清理超過 N 天的 .bak。WITH DIFFERENTIAL 或 BACKUP LOG。RESTORE VERIFYONLY FROM DISK = @FileName 寫入步驟末端。建立完成後,資料庫備份將全自動化,DBA 僅需定期抽查備份檔案完整性與還原演練即可。