SQLServer恢复表级数据
????????使用 update、delete、truncat 表,為加where條件或錯誤條件,導致數(shù)據(jù)清除或被破壞,數(shù)據(jù)庫幾十GB恢復需就需要幾十分鐘,1TB需要20小時左右,需表級的恢復加快數(shù)據(jù)庫的恢復速度。
????????在生產(chǎn)或開發(fā)環(huán)境中,往往恢復時只需恢復1個或幾個表,需要快速恢復恢復使用。
方案1:恢復到其他實例
????????數(shù)據(jù)量小的庫用備份還原一個新實例庫【完整恢復、時間點恢復】,把新庫中的表數(shù)據(jù)同步,需考慮觸發(fā)器、外鍵等因素(是否關閉)。
方案2:使用STOPAT來還原日志
恢復回滾到指定的時間點,
使用STOPAT子句,前提【完整、大容量日志恢復模式】
RESTORE DATABASE 需恢復數(shù)據(jù)庫 FROM 數(shù)據(jù)庫備份 WITH FILE=3, NORECOVERY ; RESTORE LOG 需恢復數(shù)據(jù)庫 FROM 數(shù)據(jù)庫備份 WITH FILE=4, NORECOVERY, STOPAT = 'Oct 22, 2012 02:00 AM' ; RESTORE DATABASE 需恢復的數(shù)據(jù)庫 WITH RECOVERY ;注:缺點會覆蓋從stopat指定時間點之后修改的所有數(shù)據(jù),生產(chǎn)中有數(shù)據(jù)寫入不合適。
方案3:數(shù)據(jù)快照
????????創(chuàng)建數(shù)據(jù)庫快照,當發(fā)生意外時,可以從快照中直接獲取原來的數(shù)據(jù)。但是 必須是在發(fā)生意外之前創(chuàng)建的快照。這在核心表不經(jīng)常更新,特別是有規(guī)律更新時很有用。但是當表經(jīng)常、不定期被更新,或者很多用戶在訪問時,這種方法就不可取了。當需要使用這種方法時,記得在每次更新前先創(chuàng)建快照。
方案4:使用視圖
方案4:創(chuàng)建同義詞【Synonym】
????????把表移到另外一個數(shù)據(jù)庫,然后對源數(shù)據(jù)庫的這個表創(chuàng)建一個同義詞:
USE 需要恢復庫 ; GO CREATE SYNONYM TEST_TABLE FOR 新數(shù)據(jù)庫.架構名.TEST_TABLE ; GO總結
以上是生活随笔為你收集整理的SQLServer恢复表级数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ios内购凭证_iOS内购看我
- 下一篇: oracle数据库执行update操作一