星期四, 7月 03, 2025

MSSQL Server EXPRESS如何排程自動備份資料庫

第一步、建立一個db_backup.sql純文字檔

內容:

  1. DBName改為要備份的資料庫名稱。
  2. 執行此SQL Script會在D:\db_backup\資料夾,產生DBName-YYYYMMDD.BAK的MSSQL資料庫備份檔(YYYYMMDD是執行備份當時的年月日)。
  3. 如果備份路徑加備份檔名超過50個字元,請適當修改DECLARE @BackFilename as char(50)的變數長度值。

DECLARE @Year as char(4)
DECLARE @Month as char(2)
DECLARE @Day as char(2)
DECLARE @BackFilename as char(50)

set @Year = Year(GETDATE())
set @Month = MONTH(GETDATE())
set @Day = DAY(GETDATE())

if (Len(RTrim(@Month)) = 1 )
begin
 set @Month = '0' + RTrim(@Month)
end

if ( Len(RTrim(@Day)) = 1 )
begin
 set @Day = '0' + RTrim(@Day)
end

set @BackFilename = 'D:\db_backup\DBName-' + @Year+ @Month +  @Day + '.BAK'

BACKUP DATABASE [DBName] TO DISK = @BackFilename WITH  INIT, NOUNLOAD, NAME = N'DBName backup', NOSKIP, STATS = 10, NOFORMAT


第二步、建立一個run_db_backup.bat批次檔執行第一步的db_backup.sql

內容:

  1. SERVERNAME\SQLEXPRESS的SERVERNAME,改為該主機的電腦名稱。
  2. 如果MSSQL Server EXPRESS已開啟TCP/IP連線,SERVERNAME\SQLEXPRESS可以改為IP位址。
  3. dbuser為SQL使用者名稱。
  4. dbpassword為SQL使用者密碼。

sqlcmd -S SERVERNAME\SQLEXPRESS -U dbuser -P dbpassword -i D:\db_scripts\db_backup.sql


第三步、在系統的工作排程器中建立一個基本工作

步驟一:輸入工作名稱,選取「不論使用者登入與否均執行(W)」,並勾選「以最高權限執行」。


步驟二:新增一個「觸發程序」,設定選為「每天(D)」,開始日期選今天,開始時間設定一個系統比較空檔的時間(例如設定為凌晨3點)。




步驟三:新增一個「動作」,動作為「啟動程式」,程式或指令碼(P):選擇第二步建立的run_db_backup.bat批次檔。



步驟四:完成以上步驟,按下「確定」按鈕,就完成一項基本排程工作。(按下「確定」按鈕,有時會要求輸入系統管理員密碼)

沒有留言: