生活随笔
收集整理的這篇文章主要介紹了
误删表数据,如何恢复过来
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
/*?????真實案例:在執(zhí)行語句的時候錯誤的把系統(tǒng)中的一個表的數(shù)據(jù)全部刪除?????在刪除之前,我做過一次完整的數(shù)據(jù)庫備份,再刪除之后,我第一時?????間做了尾日志備份?????也就是說??我手上現(xiàn)在有一份最新的完整備份??和刪除數(shù)據(jù)之后的尾?????日志備份?*/??USE?MASTER?GO?IF?OBJECT_ID('TestDb')?IS?NOT?NULL?DROP?DATABASE?TestDb?GO?CREATE?DATABASE?TestDb;?GO??ALTER?DATABASE?TestDb?SET?RECOVERY?FULL?WITH?NO_WAIT?GO???SELECT??????recovery_model,?????recovery_model_desc???FROM??????sys.databases???WHERE??????name?='TestDb'???/*?recovery_model??recovery_model_desc??1???FULL?*/????USE?TestDb?GO?IF?OBJECT_ID('StuInfo')?IS?NOT?NULL?DROP?TABLE?StuInfo?CREATE?TABLE?StuInfo?(?????Id?int?identity(1,1),?????StuId?varchar(25),?????StuName?nvarchar(25),?????StuSex?varchar(25),?????Others?nvarchar(255)?)?GO?insert?StuInfo(StuId,StuName,StuSex,Others)?select?'200911076','test01','男','2009年入學(xué),目前在四川成都實習(xí)'?union?all?select?'200911077','test02','男','2009年入學(xué),目前在上海實習(xí)'?union?all?select?'200911078','test03','女','2009年入學(xué),留校考研'?union?all?select?'200911079','test04','男','2009年入學(xué),目前在四川成都實習(xí)'?union?all?select?'200911080','test05','女','2009年入學(xué),留校考研'?union?all?select?'200911081','test06','男','2009年入學(xué),目前在廣東深圳實習(xí)'?GO???BACKUP?DATABASE?[TestDb]??TO??DISK?=?N'E:\MSSQL2008\MSSQL10.MSSQLSERVER\MSSQL\Backup\TestDb.bak'?WITH?NOFORMAT,?NOINIT,???NAME?=?N'TestDb-完整?數(shù)據(jù)庫?備份',?SKIP,?NOREWIND,?NOUNLOAD,??STATS?=?10?GO????SELECT?*?FROM?StuInfo?/*?Id??StuId???StuName?StuSex??Others??1???200911076???test01??男???2009年入學(xué),目前在四川成都實習(xí)?2???200911077???test02??男???2009年入學(xué),目前在上海實習(xí)?3???200911078???test03??女???2009年入學(xué),留校考研?4???200911079???test04??男???2009年入學(xué),目前在四川成都實習(xí)?5???200911080???test05??女???2009年入學(xué),留校考研?6???200911081???test06??男???2009年入學(xué),目前在廣東深圳實習(xí)?*/???insert?StuInfo(StuId,StuName,StuSex,Others)?select?'200911082','test07','男','2009年入學(xué),目前在四川成都實習(xí)'?union?all?select?'200911083','test08','女','2009年入學(xué),目前在上海實習(xí)'?select?getdate()??????delete?from?StuInfo?select?getdate()???select?*?from?StuInfo??/*?此時我發(fā)現(xiàn)自己犯的這個錯誤,為了彌補(bǔ),?我需要把數(shù)據(jù)恢復(fù)到剛剛插入數(shù)據(jù)之后的?這個時間點,于是我做了一下操作?*/????????USE?[master]??BACKUP?LOG?[TestDb]??TO??DISK?=?N'E:\MSSQL2008\MSSQL10.MSSQLSERVER\MSSQL\Backup\TestDb.bak'?WITH??NO_TRUNCATE?,?NOFORMAT,?NOINIT,???NAME?=?N'TestDb-事務(wù)日志??備份',?SKIP,?NOREWIND,?NOUNLOAD,??NORECOVERY?,???STATS?=?10,?CHECKSUM?GO?declare?@backupSetId?as?int?select?@backupSetId?=?position??from?msdb..backupset??where?database_name=N'TestDb'??and?backup_set_id=(select?max(backup_set_id)??from?msdb..backupset?where?database_name=N'TestDb'?)?if?@backupSetId?is?null??begin??raiserror(N'驗證失敗。找不到數(shù)據(jù)庫“TestDb”的備份信息。',?16,?1)??end?RESTORE?VERIFYONLY?FROM??DISK?=?N'E:\MSSQL2008\MSSQL10.MSSQLSERVER\MSSQL\Backup\TestDb.bak'?WITH??FILE?=?@backupSetId,??NOUNLOAD,??NOREWIND?GO????????RESTORE?DATABASE?[TestDb]??FROM??DISK?=?N'E:\MSSQL2008\MSSQL10.MSSQLSERVER\MSSQL\Backup\TestDb.bak'?WITH??FILE?=?1,???NORECOVERY,??NOUNLOAD,??STATS?=?10?GO????RESTORE?LOG?[TestDb]?FROM??DISK?=?N'E:\MSSQL2008\MSSQL10.MSSQLSERVER\MSSQL\Backup\TestDb.bak'?WITH??FILE?=?2,??NOUNLOAD,???STATS?=?10,??STOPAT?=?N'2013-01-11T09:10:08'?GO???use?[TestDb]?go?select?*?from?StuInfo?/*?Id??StuId???StuName?StuSex??Others??1???200911076???test01??男???2009年入學(xué),目前在四川成都實習(xí)?2???200911077???test02??男???2009年入學(xué),目前在上海實習(xí)?3???200911078???test03??女???2009年入學(xué),留校考研?4???200911079???test04??男???2009年入學(xué),目前在四川成都實習(xí)?5???200911080???test05??女???2009年入學(xué),留校考研?6???200911081???test06??男???2009年入學(xué),目前在廣東深圳實習(xí)?7???200911082???test07??男???2009年入學(xué),目前在四川成都實習(xí)?8???200911083???test08??女???2009年入學(xué),目前在上海實習(xí)?*/???總結(jié):?為了能夠在錯誤操作或者災(zāi)難發(fā)生后使數(shù)據(jù)盡快恢復(fù),數(shù)據(jù)庫就必須要滿足一下前提:??1,數(shù)據(jù)庫的恢復(fù)模式必須是完整恢復(fù)模式?2,災(zāi)難發(fā)生前或者錯誤刪除數(shù)據(jù)之前必須做過一個完整數(shù)據(jù)庫備份?3,在上次數(shù)據(jù)庫完整備份之后,如果做過任何日志備份,這些備份現(xiàn)在都能找到??滿足這些要求后,數(shù)據(jù)庫就可以恢復(fù)到任何一個時間點了。??恢復(fù)的具體步驟:??1,災(zāi)難發(fā)生后備份活動事務(wù)日志(也稱尾日志)?2,還原最新完整數(shù)據(jù)庫備份,而不做事務(wù)恢復(fù)(WITH?NORECOVERY)?3,如果存在差異備份????則還原差異備份,而不做事務(wù)恢復(fù)(WITH?NORECOVERY)?4,從備份后創(chuàng)建的第一個事務(wù)日志開始,使用NORECOVERY一次還原事務(wù)日志?5,恢復(fù)數(shù)據(jù)庫到某個時間點(WITH??STOPAT?=?N'某個時間點')? ?
轉(zhuǎn)載于:https://blog.51cto.com/812792011/1117966
總結(jié)
以上是生活随笔為你收集整理的误删表数据,如何恢复过来的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。