建立SQL Server 自動備份
公司現有的某一台的SQL Server 2000最近有一些靈異的狀況,使用系統內建的資料庫維護計畫常會有失敗的問題,查看了Log也看不太出來問題在哪裡,對於中小企業來說,有預算給業務付交際費,沒錢給IT買備份軟體做備份遇到靈異問題只能想辦法自力救濟解決了。

由於公司目前沒有購買額外的備份軟體,基於怕被抓使用盜版使用正版軟體的原則下,只好想辦法用其他方式來解決,所幸這問題不是太困難,只需撰寫一段T-SQL指令碼在搭配排成備份即可解決。
先簡單概述一下我對資料庫備份的想法:
- 每天定時備份資料庫
- 備份完的資料檔要能壓縮(不然硬碟在大都不夠塞),且檔名能依照日期做命名,好方便日後出問題時,方便回頭找檔案
- 除了本機留一份資料外,在網路其他台(或是異地)也要保存一份資料,以免單一點的機房損毀時資料全數不見
在訂好策略目標之後,接著就開始實作了
資料庫備份步驟第一階段
- 每天定時備份資料庫
- 備份完的資料檔要能壓縮(不然硬碟在大都不夠塞),且檔名能依照日期做命名,好方便日後出問題時,方便回頭找檔案
- 除了本機留一份資料外,在網路其他台(或是異地)也要保存一份資料,以免單一點的機房損毀時資料全數不見
首先先建立一個 T-SQL 的備份SQL檔,檔名隨便你取,位置就存放在你喜歡的地方 (我的作法是存成C:\backup.sql),以下為網路上的程式碼範例

圖文出處:http://shukaiyang.myweb.hinet.net/notes/web/mdfbackup.htm
看起來有點複雜,但其實要改的地方只有這裡而已,前面的部份把它改成你資料庫名稱,後面則是你要存成的檔名開頭而已 (兩邊都打一樣即可),比較麻煩的是,若你有N各資料庫要備份,那就要打上N次 (免錢的作法總是很克難 O_Q)

除了這種比較麻煩的作法外,你也可以用比較直覺的作法,利用查詢出 sysdatabases 中的非系統資料庫 (dbid > 4) 的備份,一口氣全部將現有資料庫全數備份 (預設備份完會放置在C:\sqlbackup下,要改儲存路徑也是改這段)

SQL指令碼設定完後,接著要開始做備份跟排程了,首先打開筆記本,輸入下面的內容,好了以後存成C:\Backup.bat (檔案及位置可自行更改,但要跟.sql檔案放置在同一層目錄中)

上述共有兩行指令,若是SQL Server 2005\2008者可使用上面那個,SQL Server 2000則必須使用下面那行
參數說明:
-U 是指使用什麼樣的帳號,這邊使用SQL的SA帳號
-E 是指使用信任連接,不要求密碼 (若你的SA密碼是空白的話,則也可以這樣用 XD)
若想要測試結果是否正確的話,直接點選Backup.bat就知道結果了,若沒問題的話接著開始做第二階段的步驟
資料庫備份步驟第二階段
- 每天定時備份資料庫
- 備份完的資料檔要能壓縮(不然硬碟在大都不夠塞),且檔名能依照日期做命名,好方便日後出問題時,方便回頭找檔案
- 除了本機留一份資料外,在網路其他台(或是異地)也要保存一份資料,以免單一點的機房損毀時資料全數不見
前面提到備份完的檔案要用壓縮,不然硬碟在大都不夠塞,有做過資料庫備份的人都知道備份完的檔案都是用G來起跳的,但是壓縮都大概都會差到50%以上,但是每天要用人工作業去壓縮實在是一件很不聰明的作法,身為IT當然要想辦法把人工作業給自動化,所以接著我們的壓縮作業
這邊使用到的工具是WINRAR,版本不限定,WINRAR有一個好處是在於使用試版本30天候還是可以繼續使用的,而且我們使用指令壓縮並不會彈跳出警告視窗 (其實原本是想使用7-ZIP,但礙於當時沒特別去下載做測試就做罷了:P)
WINRAR備份指令:

這邊只有使用到兩行指令,先說第一部分,紅色框框前都是指WINRAR的指令,壓縮並依照日期,接著再紅色框框內輸入你要存放的檔案名稱跟位置,而前面提到的日期會自動加到後面去,所以最終會儲存的樣子會變成SQL20110909.rar,而第二部分則是在紅色框框後面,這邊是告訴WINRAR要去哪裡抓資料,故我這邊偷懶直接寫*.BAK。而在第二行是指做完壓縮後就把*.BAK檔案刪除,除了是避免增加空間外,另外也是怕下一次備份會備到之前的資料。

若沒問題的話就可以把WINRAR的指令加到剛剛SQL備份下,並設定Windows工作排程即可完成SQL備份壓縮工作了。

資料庫備份步驟第三階段
- 每天定時備份資料庫
- 備份完的資料檔要能壓縮(不然硬碟在大都不夠塞),且檔名能依照日期做命名,好方便日後出問題時,方便回頭找檔案
- 除了本機留一份資料外,在網路其他台(或是異地)也要保存一份資料,以免單一點的機房損毀時資料全數不見
完成了第三部分後,接著就是做異地備份的事情了,這邊可能很多人會有疑問,不就COPY過去就好了嗎,其實仿間很多軟體都可以做到這樣的功能,故這邊就不多談,有興趣想知道的人可以在留言討論。
以上文章內容可能對於各位先進只是班門弄斧,若內容有誤還請指教,也希望對於想要做備份還原但苦無費用買軟體的人來說,能有一點幫助,不要跟我一樣走了很多冤枉路
參考資料: