利用日志還原數據庫

USE master
GO
-- 創建測試數據庫
CREATE DATABASE db_test GO

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

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

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

-- 假設我們現在誤操作刪除了 db_test.dbo.tb_test 這個表
DROP TABLE db_test.dbo.tb_test
GO

--在刪除操作后,發現不應該刪除表 db_test.dbo.tb_test

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

--首先,備份事務日志(使用事務日志才能還原到指定的時間點)
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),? -- 嘗試查找誤刪除數據的開始時間
??? @stop_date = MAX(BackupFinishDate),?? -- 嘗試查找誤刪除數據的結束時間
??? @try_step_millsecond = 500??????????? -- 每 500 毫秒為一個時間點找一次數據
FROM #

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

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

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

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

--最后刪除測試環境
DROP DATABASE db_test
DROP TABLE #

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388989.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Springboot集成BeanValidation擴展一:錯誤提示信息加公共模板

Bean Validator擴展 1、需求 ? 在使用validator時&#xff0c;有個需求就是公用錯誤提示信息&#xff0c;什么意思&#xff1f; 舉個例子&#xff1a; ? NotEmpty非空判斷&#xff0c;在資源文件中我不想每個非空判斷都寫”不能為空“&#xff0c;只需要寫”###“&#xff0c…

福大軟工 · 第十次作業 - 項目測評(團隊)

寫在前面 本次作業測試報告鏈接林燊大哥第一部分 調研&#xff0c;評測 一、評測 軟件的bug&#xff0c;功能評測&#xff0c;黑箱測試 1.下載并使用&#xff0c;描述最簡單直觀的個人第一次上手體驗 IOS端 UI界面簡單明了&#xff0c;是我喜歡的極簡風格。課程模塊界面簡潔優雅…

銷貨清單數據_2020年8月數據科學閱讀清單

銷貨清單數據Note: I am not affiliated with any of the writers in this article. These are simply books and essays that I’m excited to share with you. There are no referrals or a cent going in my pocket from the authors or publishers mentioned. Reading is a…

c++運行不出結果_fastjson 不出網利用總結

點擊藍字 關注我們 聲明 本文作者:flashine 本文字數:2382 閱讀時長:20分鐘 附件/鏈接:點擊查看原文下載 聲明:請勿用作違法用途,否則后果自負 本文屬于WgpSec原創獎勵計劃,未經許可禁止轉載 前言 之前做項目在內網測到了一個fastjson反序列化漏洞,使用dnslo…

FocusBI:租房分析可視化(PowerBI網址體驗)

微信公眾號&#xff1a;FocusBI關注可了解更多的商業智能、數據倉庫、數據庫開發、爬蟲知識及滬深股市數據推送。問題或建議&#xff0c;請關注公眾號發送消息留言;如果你覺得FocusBI對你有幫助&#xff0c;歡迎轉發朋友圈或在文章末尾點贊[1] 《商業智能教程》pdf下載地址 …

米其林餐廳 鹽之花_在世界范圍內探索《米其林指南》

米其林餐廳 鹽之花Among the culinary world, there are few greater accolades for a restaurant than being awarded a Michelin star (or three!), or being listed as one of the best in the world by a reputable guide. Foodies and fine dine lovers like myself, see …

require_once的用法

require_once 語句和 require 語句完全相同&#xff0c;唯一區別是 PHP 會檢查該文件是否已經被包含過&#xff0c;如果是則不會再次包含。 參見 include_once 的文檔來理解 _once 的含義&#xff0c;并理解與沒有 _once 時候有什么不同。 有一個文件a.php,里面有一個變量$var1…

差值平方和匹配_純前端實現圖片的模板匹配

基礎介紹模板匹配是指在當前圖像A里尋找與圖像B最相似的部分&#xff0c;本文中將圖像A稱為模板圖像&#xff0c;將圖像B稱為搜索匹配圖像。引言&#xff1a;一般在Opencv里實現此種功能非常方便&#xff1a;直接調用result cv2.matchTemplate(templ, search, method)templ 為…

藍牙耳機音量大解決辦法_長時間使用藍牙耳機的危害這么大?我們到底該選什么藍牙耳機呢?...

藍牙耳機避免了耳機線纏結&#xff0c;使人活動更自由&#xff0c;給人們帶來了更加方便、舒適的聽覺體驗。但近日&#xff0c;英國《每日郵報》刊文表示&#xff0c;藍牙耳機可能會危害人體健康。美國加州大學伯克利分校公共健康教授喬爾莫斯科維茨博士表示&#xff0c;已有研…

JVM基礎系列第10講:垃圾回收的幾種類型

我們經常會聽到許多垃圾回收的術語&#xff0c;例如&#xff1a;Minor GC、Major GC、Young GC、Old GC、Full GC、Stop-The-World 等。但這些 GC 術語到底指的是什么&#xff0c;它們之間的區別到底是什么&#xff1f;今天我們就來詳細說說。 Minor GC 從年輕代空間回收內存被…

模擬退火學習

模擬退火學習 作業部落網上講的不錯的(他好像還有一些其他的東西、、、) 引入 對于一些題目&#xff0c;無法直接算出答案或者想不到正解&#xff0c;想到隨機找答案&#xff0c;那么模擬退火就是一種有系統方法的隨機算法 沒用的不需要了解的來源 百度百科...... 模擬退火算法…

spotify 數據分析_我的Spotify流歷史分析

spotify 數據分析Spotisis /spo-ti-sis/ noun The analysis of one’s Spotify streaming history using Python.Spotisis / spo-ti-sis / 名詞使用Python分析一個人的Spotify流歷史。 I was reading through a lot of data science related guides and project ideas when I …

idea 搜索不到gsonformat_Idea中GsonFormat插件安裝

這個教不的期是范添事大部會基近說小間進圍磚本的程主要是學習IntelliJ IDEA 如何通過GsonFormat插件將JSONObject格式的String 支器事的后功發久這含層請間業在屏有隨些氣和域&#xff0c;實按控幻近持的前時來能過后些的處求也務瀏蔽等機站風滾或默現鈕制燈近持的前時來能過后…

intellig idea中jsp或html數據沒有自動保存和更換字體

主題一:保存數據jsp intellig idea是自動保存數據的,看到沒有保存 解決方案&#xff1a; 成功解決 主題二:更換字體: 或者快捷鍵CtelAlts 成功解決 轉載于:https://www.cnblogs.com/weibanggang/p/9398498.html

java 環境變量

1.確保安裝jrd jdk 2.環境變量配置 (1)新建->變量名"JAVA_HOME"&#xff0c;變量值"C:\Java\jdk1.8.0_05"&#xff08;JDK的安裝路徑&#xff09; (2)編輯->變量名"Path"&#xff0c;在原變量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME…

陸濤喜歡夏琳嗎_夏琳·香布利斯(Charlene Chambliss):從心理學到自然語言處理和應用研究

陸濤喜歡夏琳嗎技術系列中的女性 (WOMEN IN TECHNOLOGY SERIES) Interest in data science has been exponentially increasing over the past decade, and more and more people are working towards making a career switch into the field. In 2020, articles and YouTube v…

【angularJS】簡介

簡介 AngularJS 是一個 JavaScript 框架。它可通過 <script> 標簽添加到 HTML 頁面。 AngularJS 通過 指令 擴展了 HTML&#xff0c;且通過 表達式 綁定數據到 HTML。 AngularJS 是一個 JavaScript 框架。它是一個以 JavaScript 編寫的庫。 AngularJS 是以一個 JavaScrip…

爬取淘寶商品信息selenium+pyquery+mongodb

爬取淘寶商品信息,通過selenium獲得渲染后的源碼,pyquery解析,mongodb存儲 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import Timeout…

紋個雞兒天才小熊貓_給熊貓用戶的5個提示

紋個雞兒天才小熊貓A popular Python library used by those working with data is pandas, an easy and flexible data manipulation and analysis library. There are a myriad of awesome methods and functions in pandas, some of which are probably less well-known tha…

本人服務器遭受黑客長期攻擊,特把這幾天做的一些有用的安全方面總結出來,以方便以后查閱

消息隊列iis360northrarsql2000 netscren本人服務器遭受黑客長期攻擊&#xff0c;特把這幾天做的一些有用的安全方面總結出來&#xff0c;以方便以后查閱&#xff0c;希望這次徹底解覺黑客的攻擊&#xff0c;特次謝謝“冷雨夜”的一些提示。 windows 2003服務器安全設置方法 0…