SQL SERVER 資料誤操作的恢復

2021-09-08 06:30:41 字數 2119 閱讀 3644

事務日誌忠實地記錄了資料庫的活動,所以基於這些記錄的活動就可以隨心所欲地將資料庫的狀態恢復到特定的即時點或故障點。

事務日誌備份只能與完整恢復和大容量日誌記錄恢復模型一起使用。在簡單模型下,事務日誌可能被破壞,所以事務日誌可能不連續,不連續的事務日誌備份沒有意義,因為基於日誌的恢復要求日誌是連續的。

因為有了連續的、完整的事備日誌序列,配合乙個完整的資料庫備份,我們可以將資料庫的狀態恢復到日誌序列中的任意乙個即時點。

恢復資料到即時點有兩個前提: n

正確的完整資料庫的最後一次備份

正確完整的資料庫備份是指使用backup語句、維護計畫、手動備份的備份檔案,不支援基於資料庫檔案*.mdf的備份 n

正確的即時點

即所要恢復到資料的時間點

例項:1.

建立資料dbtest

2.建立表tbl_test

3.在表tbl_test中插入100條資料

4.備份現有的資料庫

5.再次向表tbl_test中插入50條資料

6.記錄下當前正確資料的時間d1

7.2分鐘模擬誤操作將表中所有資料刪除

8.備份資料庫尾日誌

9.將資料庫恢復到d1時間

create

database dbtest

create

table tbl_test

( id [int] not

null

primary

key,

name [datetime] not

null,

address varchar

(50)

notnull)

usedbtest

declare

@i int

set@i=1

while

(@i<=100)

begin

insert

into tbl_test values

(@i,

getdate

(),'address '

+convert

(varchar

(50),@i))

set @i=@i+1

endselect

*from tbl_test

--做一次完整資料庫備份

backup

database dbtest to

disk

='c:"dbtest.bak'

usedbtest

declare

@i int

set@i=101

while

(@i<=150)

begin

insert

into tbl_test values

(@i,

getdate

(),'address '

+convert

(varchar

(50),@i))

set @i=@i+1

endselect

*from tbl_test

當前時間為:

2008-5-26

20:13

delete

tbl_test

usemaster

backup

log dbtest to

disk

='c:"dbtestlog.bak'

with norecovery --

恢復最後一次正常配置

restore

database [dbtest] from

disk

= n' c:"dbtest.bak'

with    norecovery, nounload, stats = 10

restore

log [dbtest] from

disk

= n' c:"dbtestlog.bak '

with stopat=

'2008-5-26

20:07'

, nounload, stats = 10

誤刪除的資料已經恢復!

oracle撤回UPdate誤操作的資料

oracle撤回update誤操作的資料 oracle提供了一種閃回的方法,可以將某個時間的資料給還原回來 方法如下 1.select from table as of timestamp to timestamp 2016 10 16 16 24 00 yyyy mm dd hh24 mi ss ...

恢復 git reset hard 的誤操作

git的歷史記錄是不可修改的,也就是說你不能更 改任何已經發生的事情。你做的任何操作都只是在原來的操作上修改。也就是說,即使你刪除了乙個分支,修改了乙個提交,或者強制重置,你仍然可以回滾這些操 作。git reflog b7057a9 head reset moving to b7057a9 98a...

git 失誤操作

在將功能做好之後,沒有進行git add,而誤操作了git stash,進而將所修改的檔案全部回到上個版本,而git stash 是將做好的東西都儲存起來 也就是說 儲藏 可以獲取你工作目錄的中間狀態 也就是你修改過的被追蹤的檔案和暫存的變更 並將它儲存到乙個未完結變更的堆疊中,隨時可以重新應用。要...