sqlserver 还原到时间点
生活随笔
收集整理的這篇文章主要介紹了
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 或更早版本復制數據庫。 摘自http://msdn.microsoft.com/zh-cn/library/ms187495.aspx
執行數據庫完整還原(完整恢復模式) 數據庫完整還原的目的是還原整個數據庫。整個數據庫在還原期間處于離線狀態。在數據庫的任何部分變為在線之前,必須將所有數據恢復到同一點,即數據庫的所有部分都處于同一時間點并且不存在未提交的事務。 在完整恢復模式下,數據庫可以還原到特定時間點。時間點可以是最新的可用備份、特定的日期和時間或者標記的事務。
安全說明:
建議您不要從未知源或不可信源附加或還原數據庫。這些數據庫可能包含執行非預期 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 或更早版本復制數據庫。 摘自http://msdn.microsoft.com/zh-cn/library/ms187495.aspx
轉載于:https://blog.51cto.com/hndtraveller/319387
總結
以上是生活随笔為你收集整理的sqlserver 还原到时间点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发布一个C#实现的Asterisk的管理
- 下一篇: 如此智能的Windows Embedde