SQL Server Express 缺少 Agent 服務,無法使用維護計畫排程備份。本文提供零成本方案:Windows 排程任務 + sqlcmd + 備份預存程序,實現 Express 版自動完整/差異/記錄備份。
sp_BackupDatabase.sql 指令檔呼叫預存程序sqlcmd 執行指令檔CREATE PROCEDURE [dbo].[sp_BackupDatabase]
@databaseName SYSNAME,
@backupType CHAR(1) -- F=完整, D=差異, L=記錄
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sqlCommand NVARCHAR(1000), @dateTime NVARCHAR(20);
SELECT @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(), 111), '/', '') +
REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', '');
IF @backupType = 'F'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''C:\Backup\' + @databaseName + '_Full_' + @dateTime + '.BAK''';
ELSE IF @backupType = 'D'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''C:\Backup\' + @databaseName + '_Diff_' + @dateTime + '.BAK'' WITH DIFFERENTIAL';
ELSE IF @backupType = 'L'
SET @sqlCommand = 'BACKUP LOG ' + @databaseName +
' TO DISK = ''C:\Backup\' + @databaseName + '_Log_' + @dateTime + '.TRN''';
EXECUTE sp_executesql @sqlCommand;
END
Backup.sql儲存路徑:E:\Backup\Backup.sql (可自訂)
EXEC [sp_BackupDatabase] 'YourDatabaseName', 'F';
GO
'F''D' (需先有完整備份)'L' (資料庫需為完整復原模式)sqlcmd.exeC:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exesqlcmd -S .\SQLEXPRESS -E -i E:\Backup\Backup.sql參數說明:
-S .\SQLEXPRESS:具名執行個體 (預設 Express 實例名)-E:Windows 整合驗證-i:輸入指令檔路徑C:\Backup\ 產生 .BAK/.TRNEXEC sp_BackupDatabase ...sqlcmd -v DBName="MyDB" Type="F" 搭配指令檔變數 $(DBName)TRY...CATCH 寫入事件日誌msdb.dbo.backupset 產生備份狀態報表無 Agent 不代表無自動備份。Windows 排程任務 + sqlcmd 是 Express 版最輕量、最穩定的備份自動化方案,零授權成本、零額外軟體、完全可控。建議納入標準部署 SOP,確保每台 Express 實例上線即具備備份保護。