sqlserver 還原到時間點

今天一不冷靜就把sqlserver數據庫初始化了,在網上找了半天發現了幾篇帖子,受益非淺,記錄下
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進行數據庫備份,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.
Server 2005 聯機叢書(2007 年 9 月)

執行數據庫完整還原(完整恢復模式)
 
數據庫完整還原的目的是還原整個數據庫。整個數據庫在還原期間處於離線狀態。在數據庫的任何部分變爲在線之前,必須將所有數據恢復到同一點,即數據庫的所有部分都處於同一時間點並且不存在未提交的事務。
在完整恢復模式下,數據庫可以還原到特定時間點。時間點可以是最新的可用備份、特定的日期和時間或者標記的事務。

安全說明:
建議您不要從未知源或不可信源附加或還原數據庫。這些數據庫可能包含執行非預期 Transact-SQL 代碼的惡意代碼,或通過修改架構或物理數據庫結構導致錯誤。使用來自未知源或不可信源的數據庫前,請在非生產服務器上針對數據庫運行 DBCC CHECKDB,然後檢查數據庫中的代碼,例如存儲過程或其他用戶定義代碼。
還原完整數據庫

通常,將數據庫恢復到故障點分爲下列基本步驟:
備份活動事務日誌(稱爲日誌尾部)。此操作將創建尾日誌備份。如果活動事務日誌不可用,則該日誌部分的所有事務都將丟失。
重要提示:
在大容量日誌恢復模式下,備份任何包含大容量日誌操作的日誌都需要訪問數據庫中的所有數據文件。如果無法訪問該數據文件,則不能備份事務日誌。在這種情況下,您必須手動重做自最近備份日誌以來所做的所有更改。
 
 
 
有關詳細信息,請參閱尾日誌備份。
還原最新完整數據庫備份而不恢復數據庫 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。
如果存在差異備份,則還原最新的差異備份而不恢復數據庫 (RESTORE DATABASE database_name WITH NORECOVERY)。
從還原備份後創建的第一個事務日誌備份開始,使用 NORECOVERY 依次還原日誌。
恢復數據庫 (RESTORE DATABASE database_name WITH RECOVERY)。此步驟也可以與還原上一次日誌備份結合使用。
數據庫完整還原通常可以恢復到日誌備份中的某一時間點或標記的事務。但是,在大容量日誌恢復模式下,如果日誌備份包含大容量更改,則不能進行時點恢復。有關詳細信息,請參閱將數據庫還原到備份中的某個時間點。
還原整個數據庫時,應使用單一還原順序。下面的示例說明還原順序中用於將數據庫還原到故障點的數據庫完整還原方案的關鍵選項。還原順序由通過一個或多個還原階段來移動數據的一個或多個還原操作組成。將省略與此目的不相關的語法和詳細信息。
數據庫將還原並前滾。數據庫差異用於減少前滾時間。此還原順序用於避免丟失工作;上次還原的備份爲尾日誌備份。
還原順序的基本 RESTORE 語法是:
RESTORE DATABASE database FROM full database backup WITH NORECOVERY;
RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;
RESTORE LOG database FROM log_backup WITH NORECOVERY; 對於其他每個日誌備份,重複此還原日誌步驟。
RESTORE DATABASE database WITH RECOVERY;
示例

對於以下示例,AdventureWorks 示例數據庫已設置爲在數據庫備份之前使用完整恢復模式。此示例將創建 AdventureWorks 數據庫的尾日誌備份。接下來,示例將還原較早的完整數據庫備份和日誌備份,然後還原尾日誌備份。示例將在最後的單獨步驟中恢復數據庫。

注意:
此示例使用在完整數據庫備份的“在完整恢復模式下使用數據庫備份”部分中創建的數據庫備份和日誌備份。
 
 
 
此示例以 ALTER DATABASE 語句開頭,該語句將恢復模式設置爲 FULL。
 
 
 複製代碼 USE master; --Make sure the database is using the full recovery model. ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO --Create tail-log backup. BACKUP LOG AdventureWorks TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak''Z:\SQLServerBackups\AdventureWorks.bak' WITH NORECOVERY; GO --Restore the full database backup (from backup set 1). RESTORE DATABASE AdventureWorks   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'   WITH FILE=1,     NORECOVERY; --Restore the regular log backup (from backup set 2). RESTORE LOG AdventureWorks   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'   WITH FILE=2,     NORECOVERY; --Restore the tail-log backup (from backup set 3). RESTORE LOG AdventureWorks   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'   WITH FILE=3,     NORECOVERY; GO --recover the database: RESTORE DATABASE AdventureWorks WITH RECOVERY; GO
恢復到故障點

還原完整數據庫備份
sqlserver 還原到時間點
www.firnow.com    時間 : 2008-07-06  作者:佚名   編輯:本站 點擊:  632 [ 評論 ]
-
-
rs1_mainContentContainer_ctl25" |ctl00_rs1_mainContentContainer_ctl25',this);" href="http://msdn.microsoft.com/zh-cn/library/ms189895.aspx">如何還原數據庫備份 (Transact-SQL)
如何還原數據庫備份 (SQL Server Management Studio)
如何通過現有的數據庫備份創建新的數據庫 (SQL Server Management Studio)
還原差異數據庫備份
如何還原差異數據庫備份 (Transact-SQL)
如何還原差異數據庫備份 (SQL Server Management Studio)
還原事務日誌備份
還原數據備份之後,必須還原所有後續的事務日誌備份,然後再恢復數據庫。
如何應用事務日誌備份 (Transact-SQL)
如何還原事務日誌備份 (SQL Server Management Studio)
使用 SQL Server 管理對象 (SMO) 還原備份
SqlRestore
恢復到時間點

在完整恢復模式下,數據庫可以還原到日誌備份內的特定時間點。時間點可以是特定的日期和時間、標記的事務或日誌序列號 (LSN)。有關詳細信息,請參閱將數據庫還原到備份中的某個時間點。
 
 對 SQL Server 早期版本中備份的支持

在 SQL Server 2005 中,您可以還原使用 SQL Server 7.0 版、SQL Server 2000 或 SQL Server 2005 創建的數據庫備份。但是,SQL Server 2005 無法還原使用 SQL Server 7.0 或 SQL Server 2000 創建的 master、model 和 msdb 備份。此外,包含創建索引操作的 SQL Server 7.0 日誌備份無法還原到 SQL Server 2000 或 SQL Server 2005。
SQL Server 2005 使用與 SQL Server 早期版本不同的默認路徑。因此,若要從備份還原在 SQL Server 7.0 或 SQL Server 2000 的默認位置中創建的數據庫,必須使用 MOVE 選項。有關新默認路徑的信息,請參閱 SQL Server 2005 的默認實例和命名實例的文件位置。

注意:
使用 SQL Server 6.5 或早期版本創建的數據庫備份採用的格式不兼容,無法在 SQL Server 2005 中還原。有關如何將使用 SQL Server 6.5 或早期版本創建的數據庫升級到 SQL Server 2005 的信息,請參閱從 SQL Server 6.5 或更早版本複製數據庫。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章