從日誌中恢複SQL Server資料庫到時間點

來源:互聯網
上載者:User
server|恢複|資料|資料庫
Author:David Euler
Date: 2004/10/16
Email:de_euler-david@yahoo.com.cn

有任何問題,請與我聯絡:)



         DB2中可以使得資料庫回複到指定的時間點,SQL Server資料庫的Recovery Model為full 或者Bulk copy的時候,是可以從日誌來恢複資料庫的。實際上日誌中記錄的一條一條的transact sql語句,恢複資料庫的時候會redo這些sql語句。
  
前提條件:myBBS是資料庫test中的一個表,

          資料庫test的Recovery Model為Full,Auto Close,Auto Shrink兩個選項未選中。

          資料庫test的data files和log files均為預設的自動成長狀態。



A:2004/10/13,16:00進行Database Backup,backup database test to disk='d:\db\1600.bak' with init

B:2004/10/14,13:00對資料庫進行了update,delete等操作;

C:2004/10/15,18:00使用delete mybbs where id>300時,語句誤寫成delete mybbs,因而刪除了表mybbs中的所有資料。

 

現在在C點,C點對資料庫進行了誤操作,我們希望資料庫能夠恢複到C之前的狀態,比如恢複到10月15日17:59分的狀態。

要恢複資料庫B點,使用的是A點備分的資料庫1600.bak;而使用的日誌備分是最新的備分1820.logs;因而進行如下操作:

 

--備分日誌:

BACKUP LOG test TO DISK='d:\1820.logs' WITH INIT

 

--恢複資料庫1600.bak,使用WITH NORECOVERY參數:

RESTORE DATABASE test from disk='d:\db\1640.bak' WITH NORECOVERY

 

--使用日誌恢複資料庫到10月15日17:59分:

RESTORE LOG test
        FROM disk='d:\1820.logs' WITH RECOVERY,STOPAT='10/15/2004 17:59'


 

上面的三條Transact SQL語句的對應過程:

      1.恢複資料庫到A點;

      2.執行A-B之間的log記錄,把資料庫恢複到B點.

 

 

       這樣就恢複資料庫到了指定的時間點。如果恢複不成功,可能的原因是:1.未使用正確的備分資料庫;2.資料庫選項選中了Auto Shrink.

 

 

 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.