關於系統數據的備份和恢復!各位高手,如有好的建議,請幫小弟一把!多謝了!


我的系統是C/S模式的,系統管理員可以進行數據的備份與恢復,當然備份與恢復操作是在客戶端進行的。
我的基本想法是:確定一個時間段,從數據庫中檢索出此時間段內的數據,然后將其寫入到一個文件中,數據庫中的數據可以選擇保留或刪除,這就是備份操作。當然,要把這個文件放到服務器上才行,恢復操作就是獲得所需的文件,將數據從文件中讀出,寫入到數據表中。
這是我的基本思想,各位高手,這樣行嗎?如果這樣做,我遇到一個問題,備份時客戶端的數據文件怎么放到服務器上去,恢復時怎么從服務器端取數據?
各位高手有沒有更好的辦法,請幫小弟一把!萬分感激!

9 个解决方案

#1


想法可以,實現難

先說按時間段備份
一般來說,數據庫中的數據之間是有關聯的,不是單獨的每個表只負責自己的數據,所以按時間段來備份的話,如果刪除備份后的數據,就可能破壞這種數據間的關系
從縱向的角度來看,一個表中的數據可能會有歷史意義,比如出/入庫數據,前面的數據可能會影響后面統計的結果,這種情況簡單地刪除某個時間段數據也會有問題

再說恢復,由於數據之間的關系,只恢復指定時間段的數據,可能會與數據之間的關系產生沖突

所以按時間段備份/恢復在理論上是可行的,實現上困難的

#2


sql為備份/恢復提供了專門的備份/恢復處理語句,為什么不用呢?

#3


用sqldmo組件,就不用寫代碼了

#4


應該是不用寫sql語句了

#5


spacecm(spacecm):sqldmo組件,哪里有?我是用java來實現這個功能,可以用這個組件嗎?

zjcxc(鄒建):仁兄這是高手,一眼就看出了問題。其實,你說的問題我也考慮過,我說的按時間段備份,其實並不是按某個日期范圍備份,而是按照月份,比如現在最新的數據是2004年12月份的數據,數據庫中保留數據到10月份就足夠用了,所以10月份之前的數據都可以刪除掉,備份起來。

sql為備份/恢復提供了專門的備份/恢復處理語句,這些語句能實現對某個時間段內的數據進行備份嗎?備份完之后以什么樣的形式保存的呢?可以實現我的功能嗎?請賜教!

#6


鑒於樓主的特殊要求,sql的備份語句估計搞不了,看來樓主如果一定要實現這種“備份”,必須要把數據庫表與表之間的關系描述出來(當然是用表記錄下來,而不是用嘴說),備份時注意按照關聯關系備份數據,刪除和恢復的時候同樣需要注意關聯關系。當然,稍有失誤可能就會導致數據的嚴重破壞或者導致刪除或者恢復的失敗!其實如果沒有迫切的需求,不建議樓主這種做法。其實用sql的備份恢復還是挺好的。
如果是異地備份,還涉及到各操作系統的權限和共享問題,比較復雜。

#7


如果用sql的備份恢復功能,是不是只能對整個數據庫的數據進行整體的備份與恢復,而不是可以選擇表的備份,這樣是簡單,但是功能被限制了!那我就不用做什么程序,直接用SQL Server本身的功能就可以實現了!對吧。

#8


非常困難,這些工作本應該由DBMS來完成的,程序員用代碼去實現則非常困難,主要是網絡權限和數據安全方面的困擾。

#9


如果一定要按月份備份和清除歷史數據,直接用sql的備份功能不能實現,需要寫專門的處理程序


sql的備份/恢復允許你對數據庫進行完全備份,備份生成的文件是sql自己的專有格式(sql2000支持對備份文件設置密碼)
也允許你在完全備份后,進行差異備份,即只備份完全備份后數據庫中變化的情況


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: