SQL事務日誌還原例項
USE master
GO-- 建立測試資料庫CREATEDATABASE db_test GO-- 對資料庫進行備份BACKUPDATABASE db_test
TODISK='c:/db_test.bak'WITH FORMAT
GO-- 建立測試表CREATETABLE db_test.dbo.tb_test(
ID int)
-- 延時 1 秒鐘,再進行後面的操作(這是由於SQL Server的時間精度最大為百分之三秒,不延時的話,可能會導致還原到時間點的操作失敗)WAITFOR DELAY '00:00:01'GO-- 假設我們現在誤操作刪除了 db_test.dbo.tb_test 這個表DROP
GO--在刪除操作後,發現不應該刪除表 db_test.dbo.tb_test--下面演示瞭如何恢復這個誤刪除的表 db_test.dbo.tb_test--首先,備份事務日誌(使用事務日誌才能還原到指定的時間點)BACKUPLOG db_test
TODISK='c:/db_test_log.bak'WITH FORMAT
GO-- 獲取可嘗試的時間範圍IFOBJECT_ID(N'tempdb..#') ISNOTNULLDROPTABLE #
CREATETABLE #(
BackupName nvarchar(128) ,
BackupDescription
BackupType smallint ,
ExpirationDate datetime ,
Compressed tinyint ,
Position smallint ,
DeviceType tinyint ,
UserName nvarchar(128) ,
ServerName nvarchar(128) ,
DatabaseName nvarchar(128) ,
DatabaseVersion int ,
DatabaseCreationDate datetime ,
BackupSize numeric(
FirstLSN numeric(25,0) ,
LastLSN numeric(25,0) ,
CheckpointLSN numeric(25,0) ,
DatabaseBackupLSN numeric(25,0) ,
BackupStartDate datetime ,
BackupFinishDate datetime ,
SortOrder smallint ,
CodePage smallint ,
UnicodeLocaleId int ,
UnicodeComparisonStyle int ,
CompatibilityLevel tinyint ,
SoftwareVendorId int ,
SoftwareVersionMajor int ,
SoftwareVersionMinor int ,
SoftwareVersionBuild int ,
MachineName nvarchar(128) ,
Flags int ,
BindingID uniqueidentifier ,
RecoveryForkID uniqueidentifier ,
Collation nvarchar(128) ,
FamilyGUID uniqueidentifier ,
HasBulkLoggedData bit ,
IsSnapshot bit ,
IsReadOnly bit ,
IsSingleUser bit ,
HasBackupChecksums bit ,
IsDamaged bit ,
BeginsLogChain bit ,
HasIncompleteMetaData bit ,
IsForceOffline bit ,
IsCopyOnly bit ,
FirstRecoveryForkID uniqueidentifier ,
ForkPointLSN numeric(25,0) NULL,
RecoveryModel nvarchar(60) ,
DifferentialBaseLSN numeric(25,0) NULL,
DifferentialBaseGUID uniqueidentifier ,
BackupTypeDescription nvarchar(60) ,
BackupSetGUID uniqueidentifierNULL
)
INSERT # EXEC(N'
RESTORE HEADERONLY
FROM DISK = ''c:/db_test.bak''
WITH FILE = 1
RESTORE HEADERONLY
FROM DISK = ''c:/db_test_log.bak''
WITH FILE = 1
')
--SELECT
-- *
--FROM #-- 定義嘗試的時間範圍,以及嘗試時間點的間隔DECLARE@start_datedatetime,
@stop_datedatetime,
@try_step_millsecondint,
@msgnvarchar(1000)
SELECT@start_date=MIN(BackupFinishDate), -- 嘗試查詢誤刪除資料的開始時間@stop_date=MAX(BackupFinishDate), -- 嘗試查詢誤刪除資料的結束時間@try_step_millsecond=500-- 每 500 毫秒為一個時間點找一次資料FROM #
-- 還原完全備份RESTOREDATABASE db_test
FROMDISK='c:/db_test.bak'WITHREPLACE,
NORECOVERY
-- 還原日誌備份到各點,以尋找出所需資料WHILE@start_date<@stop_dateBEGINSELECT@start_date=DATEADD(ms, @try_step_millsecond, @start_date),
@msg= N'嘗試時間點: '+CONVERT(varchar(50), @start_date, 121)
RAISERROR(@msg, 10, 1) WITH NOWAIT
BEGIN TRY
-- 還原日誌到指定的點,並通過 STANDBY 使資料庫能只讀訪問RESTORELOG db_test
FROMDISK='c:/db_test_log.bak'WITH STOPAT =@start_date,
STANDBY ='c:/db_test_redo.bak'-- 檢查需要的資料是否存在IFOBJECT_ID(N'db_test.dbo.tb_test') ISNOTNULLBEGIN-- 顯示還原的時間點SELECT Restoreto =@start_date-- 完成資料庫還原,使資料庫可讀寫RESTORELOG db_test
WITH RECOVERY
SELECT@start_date=@stop_dateENDEND TRY
BEGIN CATCH
END CATCH
ENDGO--最後刪除測試環境DROPDATABASE db_test
DROPTABLE #
相關推薦
SQL事務日誌還原例項
USE masterGO-- 建立測試資料庫CREATEDATABASE db_test GO-- 對資料庫進行備份BACKUPDATABASE db_testTODISK='c:/db_test.bak'WITH FORMATGO-- 建立測試表CREATETABLE db
SQL Server 2008/2012 完整資料庫備份+差異備份+事務日誌備份 資料庫完整還原(一)
還原方案 資料庫級(資料庫完整還原) 還原和恢復整個資料庫。資料庫在還原和恢復操作期間會處於離線狀態。SQL SERVER不允許使用者備份或還原單個表。還原方案是指從一個或多個備份中還原資料、繼而恢復資料庫的過程。 不同恢復模式所支援的各種還原方案 簡單恢復
SQL Server 備份和還原全攻略, 完全備份,差異備份,增量備份,事務日誌備份
2011-06-29 17:03 by 聽風吹雨, 3435 閱讀, 17 評論, 收藏, 編輯 一、知識點 完全備份: 備份全部選中的資料夾,並不依賴檔案的存檔屬性來確定備份那些檔案。(
(2.7)備份與還原--在完全恢復模式下事務日誌的角色
ges 需要 很多 對數 for 事情 mage .com .html 簡介 生產環境下的數據是如果可以寫在資產負債表上的話,我想這個資產所占的數額一定不會小。而墨菲定律(事情如果有變壞的可能,無論這種可能性有多小,它總會發生)仿佛是給DBA量身定做的。在上篇文章介
(2.6)備份與還原--在簡單恢復模式下事務日誌的角色
除了 空間 ble 暫時 cover recovery html AC truncated 簡介 在簡單恢復模式下,日誌文件的作用僅僅是保證了SQL Server事務的ACID屬性。並不承擔具體的恢復數據的角色。正如”簡單”這個詞的字面意思一樣,數據的備份和恢復僅僅
(2.8)備份與還原--在大容量恢復模式下事務日誌的角色
數據一致性 過程 使用 非正常關閉 cnblogs 地方 重建 結構 恢復 簡介 日誌的作用是保證持久性和數據一致性,通過日誌可以實現數據的Undo與Redo,因此通過日誌,SQL Server不僅僅可以實現災難恢復,還可以通過日誌的Redo來實現高可用性。本篇文章
(2.17)備份與還原--事務日誌不能截斷的原因與收縮日誌文件
查點 數據庫引擎 重復 int .data ase 日誌截斷 soft 時間 一、日誌截斷的目的 日誌截斷後,數據庫引擎將MinLSN之前的虛擬日誌文件(VLF)標記為“可復用”。“可復用”的VLF可以成為日誌回繞後重復利用的空間,也可以在收縮日誌文件時釋放其占用的磁盤空
SQL Server中事務日誌已滿的原因以及解決辦法
錯誤描述:資料庫的事務日誌已滿。若要查明無法重用日誌中的空間的原因 ,請參閱sys.databases 中的 log_reuse_wait_desc 列 。 首先引入一下事務日誌的概念(來自百度百科): 事務日誌是一個與資料庫檔案分開的檔案
SQL Server中事務日誌管理的階梯,級別5:以完全恢復模式管理日誌
value letter 的確 維護計劃 臨時 行數 dbo call des 該系列本文是Stairway系列的一部分:SQL Server中事務日誌管理的階梯 當事情進展順利時,沒有必要特別註意事務日誌的功能或工作方式。您只需要確信每個數據庫都有正確的備份機制。當出現問
SQL Server事務日誌管理的進階,第5級:在完全恢復模式下管理日誌
SQL Server事務日誌管理的進階,第5級:在完全恢復模式下管理日誌 原文連結:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 託尼·戴維斯(Tony Davis)著,2012年1月27日
sql伺服器第5級事務日誌管理的階梯:完全恢復模式下的日誌管理
sql伺服器第5級事務日誌管理的階梯:完全恢復模式下的日誌管理 原文連結http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者 Tony Davis, 2012/01/27 系列 本文是階
SQL Server中事務日誌管理的步驟,第5級:完全恢復模式管理日誌(譯)
維護計劃 recover 最小 替代 關心 每日 工作方式 檢查 耗時 SQL Server中事務日誌管理的步驟,第5級:完全恢復模式管理日誌 作者:Tony Davis,2012/01/27 系列 本文是進階系列的一部分:SQL Server中事務日誌管理的步驟 當事情進
SQL Server中事務日誌管理的步驟,第5級:完全恢復模式管理日誌
語句 targe .aspx 頻率 良好的 popu 這樣的 模式 insert SQL Server中事務日誌管理的步驟,第5級:完全恢復模式管理日誌 作者:Tony Davis,2012/01/27 系列 本文是進階系列的一部分:SQL Server中事務日誌管理的
翻譯《Stairway to SQL Server Replication: Level 5- Managing the Log in Full Recovery Mode》 SQL Server事務日誌管理的進階,第5級:在完全恢復模式下管理日誌
SQL Server事務日誌管理的進階,第5級:在完全恢復模式下管理日誌 SQL Server事務日誌管理的進階,第5級:在完全恢復模式下管理日誌 作者:託尼·戴維斯(Tony Davis) 時間:2012年1月27日 原文連結:http://www.sqlser
第五次翻譯:SQL Server事務日誌管理的進階,第5級:在完全恢復模式下管理日誌
SQL Server中事務日誌管理的階梯,第5級:在完全恢復模式下管理日誌 作者:Tony Davis,2012/01/27 文章轉載自:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 該系列
翻譯:SQL Server中事務日誌管理的階梯,級別5:以完全恢復模式管理日誌
作者:Tony Davis, 2012/01/27 該系列 本文是Stairway系列的一部分:SQL Server中事務日誌管理的階梯 當事情進展順利時,沒有必要特別注意事務日誌的功能或工作方式。您只需要確信每個資料庫都有正確的備份機制。當出現問題時,瞭解事務日誌對於採取糾正措施非常重要,尤
翻譯之:SQL Server中事務日誌管理的階梯,級別5:以完全恢復模式管理日誌
資料庫中事務日誌管理的階梯,級別5:以完全恢復模式管理日誌 原文連結:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 本文是樓梯系列的一部分:SQL Server
翻譯:Stairway to Transaction Log Management in SQL Server, Level 5: Managing the Log in Full Recovery Mode SQL Server中事務日誌管理的階梯,級別5:以完全恢復模式管理日誌
轉載自:Stairway to Transaction Log Management in SQL Server, Level 5: Managing the Log in Full Recovery Mode SQL Server,By Tony Davis,文章來源:http://www.sqlserve
SQL SERVER 事務日誌已滿 處理辦法
一大早使用者就報,SQL SERVER日誌滿了。 執行語句參考: ALTER DATABASE CARDB SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER
SQL Server 2008 R2中 某XX資料庫 的事務日誌已滿 請參閱 sys.databases 中的 log_reuse_wait_desc 列
碰到此類問題首先想到的就是日誌空間問題以及磁碟問題,具體排查總結如下: 第一: 排查當前資料庫日誌檔案增長方式,確認是否做了相應的限制; 第二:檢查資料庫當前恢復模式 (完全、簡單、大容量日誌); 第三:排查當前資料庫日誌檔案所儲存 的磁碟空間