http://tw.myblog.yahoo.com/jw!7KOAi5OEGQL9D1WOQ2X5/article?mid=-2&prev=6&l=a&fid=5
Microsoft SQL server 異機備份
Microsoft SQL server 異機備援
MS SQL 很討厭的就是.....執行計畫所衍生出來的.bak只能存在本機,網路上的分享資料夾還不給存,萬一要是整台機器被雷打到怎麼辦,微軟一定又會說 [你要買XXX的授權阿!!!! 很貴喔] 。
其實省錢有省錢的作法
直接複製資料庫實體檔案到網路上的資料夾,假設SQL實體檔案在E:\Microsoft SQL Server\MSSQL\Data。
net use z: \\190.190.190.85\sqlbackup "password" /user:domain.com.tw\administrator
;將網路上的資料夾\\190.190.190.85\sqlbackup掛載成 Z:
;密碼是password,帳號是網域中的administrator
net stop mssqlserver
;將資料庫停止
xcopy "E:\Microsoft SQL Server\MSSQL\Data" Z:\1_Mon\ /H /E /X /O /K /Y
;複製 E:\Microsoft SQL Server\MSSQL\Data 裡面所有的資料到 Z:\1_Mon\
;"雙引號"的使用時機是當目錄名稱有空格或是中文的時候
; xcopy /? 可以了解其參數內容
net start mssqlserver
;開啟資料庫
net use z: /delete
;卸載Z:
其實也可以複製資料庫執行計畫所衍生出來的BAK檔,做法也都差不多,差在不用停資料庫而已。
複製實體檔案還好,同檔名的實體資料庫用以上的指令是會Overwrite的,不會有容量的問題。這是我初期的作法,後來想到每天資料庫都停停走走的也不對,所以想到要複製bak檔。。但是複製bak的情況又不一樣............
1. 執行計畫保留一個禮拜,用以上的方法每天都要copy一個禮拜的資料,硬碟會累死。
2 . 沒有下判斷式去刪除網路資料夾上的過期資料,要用手動的就算每個禮拜手動刪一次我也嫌煩。
那時候要做之前就想到以上兩個問題,有一天假日到跟女朋友吃麥當勞的時候大便想到的解決方法。
1 . 網路資料夾新增禮拜一到禮拜五共五個資料夾。
2 . 執行計畫設定五個,每個執行計畫分別放在禮拜一到禮拜五的資料夾。
3 . 批次檔也寫五個,不同的來源複製到相對應的網路資料夾。
4 . 每個資料夾下一個刪除目的地資料夾的指令。
這個想法後來時作上是成功了,不過後來跟公司申請一部PC,灌Linux並且在上面寫判斷是,一個檔案幾行就搞定禮拜一到禮拜五的bak備份了。
不知道有沒有人可以提供Windows的寫法.......最好是一個檔案幾行就可以搞定禮拜一到禮拜五的。
(Syncback這支程式好像可以做網路資料夾同步,不過我還是想知道Windows的寫法)