今天同事不小心將一個很重要的數據表中的數據刪除了,找了很多人都沒辦法恢復。我在網上搜索了一下資料,發現有一個方法可以一試,具體如下
http://www.knowsky.com/616730.html 非常感謝這位仁兄,用這個方法果然恢復成功
SQL Server數據恢復——日志備份
SQL Server數據恢復——日志備份
太坑了,我把數據給刪了
“大坑啊,數據被我誤刪了。”從事數據庫相關工作的過程中,我想應該很多人會有過和我一樣的遭遇吧?尤其是在進行update或者delete操作的時候,忘記了where條件。這些毀滅性的操作,足以使你不能淡定。然后就開始到baidu、csdn、csblogs等等找恢復方案。網上呢,也是眾說紛紜,一時間,你又崩潰了。這個時候要學會淡定,否則,會讓你心碎的。
幸好,還可以數據恢復
出現這類問題之后,我們的目的就是想找回誤操作之前的數據,在SSMS2008之前,有個很出名的工具LogExploer,但是好像是收費的(反正,我是對收費的工具,都是避而遠之)。除了這之外,我們還可以使用日志備份的功能,來完成數據恢復。
下面我們來講解用日志備份的方法來恢復數據(有圖有真相哦)。
准備工作:
1.運行下面的代碼,創建RecoverDemo數據庫,和TestTable表。
1 USE [RecoverDemo] 2 GO 3 /****** Object: Table [dbo].[TestTable] Script Date: 10/22/2014 17:00:36 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 SET ANSI_PADDING ON 9 GO10 CREATE TABLE [dbo].[TestTable](11 [A] [varchar](50) NULL12 ) ON [PRIMARY]13 GO14 SET ANSI_PADDING OFF15 GO16 INSERT [dbo].[TestTable] ([A]) VALUES (N'a1')17 INSERT [dbo].[TestTable] ([A]) VALUES (N'a2')18 INSERT [dbo].[TestTable] ([A]) VALUES (N'a3')19 INSERT [dbo].[TestTable] ([A]) VALUES (N'a4')20 INSERT [dbo].[TestTable] ([A]) VALUES (N'a5')21 INSERT [dbo].[TestTable] ([A]) VALUES (N'a6')22 INSERT [dbo].[TestTable] ([A]) VALUES (N'a7')23 INSERT [dbo].[TestTable] ([A]) VALUES (N'a8')24 INSERT [dbo].[TestTable] ([A]) VALUES (N'a9')25 INSERT [dbo].[TestTable] ([A]) VALUES (N'a10')
2.然后做一次完整備份,至於步驟就沒必要說了吧。(恢復數據的前提是,該數據庫至少做過一次完整備份)
提示:因為所有類型的備份都是基於完整備份的,如果沒有至少一次的完整備份,其他的備份都是多余的,所以一定要在建完數據庫后做一次完整備份。
3.確認數據庫的恢復模式為完整。
提示:在生產環境中,都強烈建議使用【完整恢復模式】,即使說相對於其他兩中恢復模式,完整恢復模式產生的日志會很大,但是在出現問題的時候,這都不算什么了。
4.執行下面腳本,向TestTable中添加數據。
1 INSERT [dbo].[TestTable] ([A]) VALUES (N'a11') 2 INSERT [dbo].[TestTable] ([A]) VALUES (N'a12') 3 INSERT [dbo].[TestTable] ([A]) VALUES (N'a13') 4 INSERT [dbo].[TestTable] ([A]) VALUES (N'a14') 5 INSERT [dbo].[TestTable] ([A]) VALUES (N'a15') 6 INSERT [dbo].[TestTable] ([A]) VALUES (N'a16') 7 INSERT [dbo].[TestTable] ([A]) VALUES (N'a17') 8 INSERT [dbo].[TestTable] ([A]) VALUES (N'a18') 9 INSERT [dbo].[TestTable] ([A]) VALUES (N'a19')10 INSERT [dbo].[TestTable] ([A]) VALUES (N'a20')
檢查結果:select * from TestTable
災難發生了
1.我們誤操作刪除(delete from TestTable)了TestTable中的數據。
這個時候,你就該不淡定了。
別急!我們來恢復數據
之前的那些都算是拋磚引玉吧,接下來才是我們重點想講述的。
1.做日志備份,記住一定要選擇【備份日志尾部】。
然后在【選項】中,嚴格按照紅色框中的選擇項進行勾選,否則,你可能會哭的。並且保證數據庫不要有連接,因為有鏈接,日志備份是備份不了的。
2.日志備份后數據庫會處於【正在還原狀態...】
日志備份后就可以進行數據還原了
3.先要還原完整備份,注意一定要選擇最后那一次的完整備份,否則是還原不了的。
4.最后一步就是還原日志備份了,選擇恢復的時間點不必太在意,只要填寫你誤操作之前的時間點,就可以了。
哈哈,數據還原成功了。
后事之師
1.在進行危險操作的的時候一定要,謹慎謹慎,以免造成不必要的麻煩。
2.一定要養成備份的習慣,千萬不要因為嫌棄日志文件過於龐大,就將恢復模式設為【簡單】,甚至是刪除日志文件,到那個時候神仙恐怕也就不了你了。