日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

利用日志还原数据库

發(fā)布時間:2023/11/30 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用日志还原数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

USE master
GO
-- 創(chuàng)建測試數(shù)據(jù)庫
CREATE DATABASE db_test GO

-- 對數(shù)據(jù)庫進行備份
BACKUP DATABASE db_test
TO DISK = 'c:/db_test.bak'
WITH FORMAT
GO

-- 創(chuàng)建測試表
CREATE TABLE db_test.dbo.tb_test(
??? ID int)

-- 延時 1 秒鐘,再進行后面的操作(這是由于SQL Server的時間精度最大為百分之三秒,不延時的話,可能會導(dǎo)致還原到時間點的操作失敗)
WAITFOR DELAY '00:00:01'
GO

-- 假設(shè)我們現(xiàn)在誤操作刪除了 db_test.dbo.tb_test 這個表
DROP TABLE db_test.dbo.tb_test
GO

--在刪除操作后,發(fā)現(xiàn)不應(yīng)該刪除表 db_test.dbo.tb_test

--下面演示了如何恢復(fù)這個誤刪除的表 db_test.dbo.tb_test

--首先,備份事務(wù)日志(使用事務(wù)日志才能還原到指定的時間點)
BACKUP LOG db_test
TO DISK = 'c:/db_test_log.bak'
WITH FORMAT
GO

-- 獲取可嘗試的時間范圍
IF OBJECT_ID(N'tempdb..#') IS NOT NULL
??? DROP TABLE #
CREATE TABLE #(
??? BackupName nvarchar(128) ,
??? BackupDescription nvarchar(255) ,
??? 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(20,0) ,
??? 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 uniqueidentifier NULL
)
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_date datetime,
??? @stop_date datetime,
??? @try_step_millsecond int,
??? @msg nvarchar(1000)
SELECT
??? @start_date = MIN(BackupFinishDate),? -- 嘗試查找誤刪除數(shù)據(jù)的開始時間
??? @stop_date = MAX(BackupFinishDate),?? -- 嘗試查找誤刪除數(shù)據(jù)的結(jié)束時間
??? @try_step_millsecond = 500??????????? -- 每 500 毫秒為一個時間點找一次數(shù)據(jù)
FROM #

-- 還原完全備份
RESTORE DATABASE db_test
FROM DISK = 'c:/db_test.bak'
WITH REPLACE,
??? NORECOVERY

-- 還原日志備份到各點,以尋找出所需數(shù)據(jù)
WHILE @start_date < @stop_date
BEGIN
??? SELECT
??????? @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 使數(shù)據(jù)庫能只讀訪問
??????? RESTORE LOG db_test
??????? FROM DISK = 'c:/db_test_log.bak'
??????? WITH STOPAT = @start_date,
??????????? STANDBY = 'c:/db_test_redo.bak'

??????? -- 檢查需要的數(shù)據(jù)是否存在
??????? IF OBJECT_ID(N'db_test.dbo.tb_test') IS NOT NULL
??????? BEGIN
??????????? -- 顯示還原的時間點
??????????? SELECT Restoreto = @start_date
??????????? -- 完成數(shù)據(jù)庫還原,使數(shù)據(jù)庫可讀寫
??????????? RESTORE LOG db_test
??????????? WITH RECOVERY

??????????? SELECT
??????????????? @start_date = @stop_date
??????? END
??? END TRY
??? BEGIN CATCH
??? END CATCH
END
GO

--最后刪除測試環(huán)境
DROP DATABASE db_test
DROP TABLE #

總結(jié)

以上是生活随笔為你收集整理的利用日志还原数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱仑 | 欧美一级特黄aa大片 | 亚洲欧美一| 偷偷在线观看免费高清av | 97超碰人人澡人人爱学生 | 久久久久国产视频 | 亚洲欧洲综合av | 成人一区在线观看 | 女同性αv亚洲女同志 | 日日夜夜精品视频免费 | 久久午夜夜伦鲁鲁片无码免费 | 日本精品在线观看 | 国产一区二区视频网站 | 精品免费国产一区二区三区 | 精品国产乱码久久久久久1区二区 | 宅男午夜影院 | 国产91在线播放九色 | 亚洲性猛交富婆 | 久久97| 五月婷婷网 | 黄色一级片久久 | 欧美日韩在线视频一区二区 | 性久久久久久久久 | 久艹在线观看 | 精品人妻午夜一区二区三区四区 | 午夜精品久久久久久久久久久久久蜜桃 | youjizz亚洲 | 亚洲不卡中文字幕 | 国产欧美一区二区三区精品酒店 | 男生女生搞黄色 | 丁香婷婷久久久综合精品国产 | 亚洲啪av永久无码精品放毛片 | 99欧美| 污导航在线| 在线播放视频高清在线观看 | 成人h网站 | 97精品国产97久久久久久粉红 | av瑟瑟 | 性欧美在线观看 | 粉嫩精品久久99综合一区 | 国产在线拍揄自揄拍无码视频 | 激情 小说 亚洲 图片 伦 | 天堂网一区二区三区 | 国产无遮挡又黄又爽免费视频 | 一级做a爰片久久毛片 | 日本在线国产 | 成人免费在线看片 | 国产精品一区二区三区在线播放 | 欧美一级片在线免费观看 | 国产主播专区 | 国产91视频在线 | 很黄的网站在线观看 | 亚洲男女视频在线观看 | 热久久中文字幕 | 精品国产一二区 | 欧美大胆a | 噼里啪啦动漫高清在线观看 | 日日狠狠久久偷偷四色综合免费 | 原来神马电影免费高清完整版动漫 | 2024av| 尤物videos另类xxxx | 久久av一区二区三区 | 无套爆插 | 精品国产亚洲一区二区麻豆 | 男女激情四射网站 | 三级免费毛片 | av第一福利| 国产精品理论片 | 国产一区二区三区亚洲 | 国产欧美网站 | 爱av在线| 91亚洲国产成人精品一区 | 美女免费福利视频 | 奇米视频在线观看 | 午夜生活片 | 欧美日韩久久精品 | 九九爱视频 | 一本久道久久综合无码中文 | 三级成人在线 | 亚洲欧美成人一区二区 | 丰满少妇一区二区三区 | 梦梦电影免费高清在线观看 | 久久激情婷婷 | 成年人在线观看视频网站 | 一区二区三区在线免费播放 | 欧美日韩人妻一区二区 | 免费在线观看一区二区 | 亚洲色妞| 国产性爱精品视频 | 国产成人自拍一区 | 亚洲一区二区三区免费看 | 成人三级影院 | 伊人久久99| 手机看黄色 | аⅴ资源新版在线天堂 | 亚洲国产综合av | 午夜精品久久久久久久久久久久久 | 精品国产乱码久久久久久88av | 国产suv精品一区二区四 |