由於常常遇到客戶家的 DB 是 SQL Express,每當建置完系統後都會有備份資料庫的需求,
偏偏 SQL Express 不提供自動備份功能,因此只能自己實作排程備份。
基本上,Window Server上要做排程,最簡單就是用內建的工作排程器,必須要寫一個console程式,
或是用bat檔執行SQL指令; 不過,我目前都是用Hanfire,可以產生背景處理程序完成排程工作,並且可以直接在原本的網站專案上寫排程的程式碼,實在是非常的好用。
有了排程系統,接下來就只要準備備份的SQL指令,而除了資料庫備份外,建議在備份後清理一下log file,
因為log file越到後期會肥大,動則好幾10G… 不但佔滿硬碟空間,網站也會跑得比較慢。
備份資料庫的指令碼
1 2 3 4 5 6
| DECLARE @path nvarchar(MAX), @name nvarchar(MAX) SET @path = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\MyDatabase.bak' SET @name = N'MyDatabase-完整資料庫備份'
BACKUP DATABASE [CPCBoard] TO DISK = @path WITH NOFORMAT, NOINIT, NAME = @name, SKIP, NOREWIND, NOUNLOAD, STATS = 10
|
清理記錄檔案的指令碼
1 2 3 4 5 6 7 8 9
| USE [MyDatabase];
ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE;
DBCC SHRINKFILE (N'MyDatabase_log', 1);
ALTER DATABASE [MyDatabase] SET RECOVERY FULL;
|