SQL Server Express 版無 SQL Server Agent,無法使用內建維護計畫排程備份。本文提供零成本、原生工具的自動備份方案:Windows 排程任務 + 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);
-- 產生時間戳:yyyyMMddHHmmss
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; GO
路徑:E:\Backup\Backup.sql(可自訂)
EXEC sp_BackupDatabase 'YourDatabaseName', 'F'; -- 每日完整備份
GO
sqlcmd.exe(位於 x:\Program Files\Microsoft SQL Server\90\Tools\Binn\)。sqlcmd -S .\SQLEXPRESS -E -i E:\Backup\Backup.sql-S .\SQLEXPRESS:本機具名實例(視實際實例名調整)。-E:Windows 整合驗證(排程帳號需具備 sysadmin 或備份權限)。-i:指定輸入 SQL 腳本檔。執行排程後,檢查 C:\Backup\ 目錄是否產生 .BAK / .TRN 檔案。
xp_cmdshell 或 PowerShell 腳本實現「保留最近 N 天、自動刪除舊備份」。RESTORE VERIFYONLY 驗證備份可用性。作者:RyanDing | 出處:https://www.cnblogs.com/ryanding/ | 本文版權歸作者與博客園共有,轉載請保留聲明並附原文連結。