出處
在 SQL Server 的 Express 版本中, 沒有自動備份的功能可使用.
一般備份就分成兩種方式:
- 透過 Management Studio Express 進行手動備份.
- 自行撰寫 T-SQL 的 Script, 或是寫程式去呼叫 T-SQL 的備份指令, 進行資料庫備份.
以下使用第二種方式, 並利用 Windows 的排程作業, 達到定期備份資料庫的作業.
需求:
- 每日定期備份 LYTDB 和 LYTDB00 這兩個資料庫.
- 將資料庫的備份檔放在 D:\Database_Backup\ 目錄內.
- 建立一個 T-SQL 的備份 sql 檔 (例如: backup.sql), 並將該檔案放在 C:\ 內.12345678910111213141516171819
USE master
GO
DECLARE
@backupTime
VARCHAR
(20)
DECLARE
@sqlCommand NVARCHAR(1000)
--設定檔名的執行時間.例如以下的@backupTime將會是200904221156(yyyyMMddHHmm)
--此值可以視需求進行調整,如果是每小時備份,就只要2009042211(yyyyMMddHH)
SELECT
@backupTime=(
CONVERT
(
VARCHAR
(8), GETDATE(), 112)
+
REPLACE
(
CONVERT
(
VARCHAR
(5), GETDATE(), 114),
':'
,
''
))
--設定LYTDB資料庫的備份命令
--可視需要修改備份檔存放的位置
SET
@sqlCommand =
'BACKUP DATABASE LYTDB TO DISK='
'D:\Database_Backup\LYTDB_'
+ @backupTime+
'.bak'
''
EXECUTE
sp_executesql @sqlCommand
--設定LYTDB00資料庫的備份命令
--可視需要修改備份檔存放的位置
SET
@sqlCommand =
'BACKUP DATABASE LYTDB00 TO DISK='
'D:\Database_Backup\LYTDB00_'
+ @backupTime+
'.bak'
''
EXECUTE
sp_executesql @sqlCommand
GO
- 撰寫一個執行上一步 backup.sql 檔的 bat 檔(例如: backup_database.bat), 並放在與 backup.sql 相同的目錄中.
內容只有一行:
sqlcmd -S . -i c:\backup.sql
sqlcmd 相關參考如下: http://msdn.microsoft.com/zh-tw/library/ms170572.aspx - 在 Windows 中建立一個排程作業:
- [開始] -> [所有程式] -> [附屬應用程式] -> [系統工具] -> [排定的工作].
- Double Click [新增排定的工作] 後, 按下 [下一步].
- 按下 [瀏覽], 會出現選取程式的畫面 -> 選取 c:\ backup_database.bat 按下 [開啟], 最後按下 [下一步] 進行下一個步驟.
- 選取 [每日] -> 按下 [下一步].
- 開始時間選擇 [下午 12:30] -> 執行方式選 [每天] -> 開始日期維持預設或另外設定 -> 按下 [下一步].
- 輸入執行此程式的帳號 (用 administrator 帳號) -> 按下 [下一步].
- 勾選 [按下[完成]後開啟這項工作的進階內容] -> 按下 [完成].
- 在進階頁面中檢視各項設定是否無誤, 記得 [工作] 頁籤中的 [登入後才執行]要取消勾選, [啟用] 的選項要勾選.
- 如果一天內要備份多次 (例如多一個上午1點的備份), 可在 [排程] 頁籤中, 勾選 [顯示多項排程] -> 在上方按下 [新增] -> 設定工作排程為 [每天], 開始時間為 [上午01:00] -> 按下 [套用].
- 另外, 在 [設定] 頁籤中, 記得取消勾選 [在x小時後停止排定的工作] -> 按下 [確定]. (若有特殊需求, 此項可跳過, 並維持勾選)
執行後會在 D:\Database_Backup\ 產生 LYTDB_yyyyMMddHHmm.bak 與 LYTDB00_yyyyMMddHHmm.bak 兩個備份檔.
(yyyyMMddHHmm 表示年月日時分, 例如: 200904221156)
參考二
出處
SQL Server Express 為免費版的 SQL Server,並未支援以 SQL Server Agent 來設定自動備份資料庫,但可以透過Windows排定的工作呼叫SqlCmd指令來執行事先建立好的TSQL敘述達到類似SQL Server Agent的功能。
1. 建立 backup_time.sql
新增一純文字文件內容如下,其中 "POS" 字串請自行修改為資料庫名稱,然後儲存後將檔名更改為 "backup_time.sql"
USE master
GO
DECLARE @backupTime VARCHAR(20)
DECLARE @sqlCommand NVARCHAR(1000)
--設定檔名的執行時間.例如以下的@backupTime將會是200904221156(yyyyMMddHHmm)
--此值可以視需求進行調整,如果是每小時備份,就只要2009042211(yyyyMMddHH)
SELECT @backupTime=(CONVERT(VARCHAR(8), GETDATE(), 112) +REPLACE(CONVERT(VARCHAR(5), GETDATE(), 114), ':', ''))
--設定LYTDB資料庫的備份命令
--可視需要修改備份檔存放的位置
SET @sqlCommand = 'BACKUP DATABASE [POS] TO DISK=''D:\POS_' + @backupTime+'.bak'''
EXECUTE sp_executesql @sqlCommand
GO
2. 建立 backup_database.bat
新增一純文字文件內容如下,請自行修改其中的帳號密碼,然後將檔名更改為 "backup_database.bat"
sqlcmd -S .\sqlexpress -U 帳號 -P 密碼 -i "backup_time.sql"
最後透過 WINDOWS 排程設定自動執行批次檔即可
沒有留言:
張貼留言