一区二区三区在线视频播放_一区在线播放视频_欧美.com_亚洲精品无人区_久久亚洲精品视频_国产精品久久久久久久免费软件_久久av一区二区三区_欧美国产日韩精品免费观看_亚洲一区自拍_91久久国产精品91久久性色_亚洲一区二区三区在线播放_久久久久久久一区_国产精品一区二区久久久_精品成人国产_亚洲欧洲精品一区二区三区波多野1战4_在线观看亚洲精品

綠色資源網:您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網

技術教程
您的位置:首頁數據庫類SQL Server → SQL Server數據庫損壞檢測以及SQL Server數據庫修復的解決方案

SQL Server數據庫損壞檢測以及SQL Server數據庫修復的解決方案

我要評論 2013/09/22 19:00:21 來源:綠色資源網 編輯:www.makmong.com [ ] 評論:0 點擊:360次

在一個理想的世界中,不會存在任何數據庫的損壞,就像我們不會將一些嚴重意外情況列入我們生活中的日常一樣,而一旦這類事情發生,一定會對我們的生活造成非常顯著的影響,在SQL Server中也同樣如此,或許幾年內您沒有遇見過數據庫中出現這類情況,而一旦遇見這類情況,往往伴隨著數據的丟失,宕機,嚴重甚至您本身的職業生涯也會受到影響。因此對于這類情況,我們需要了解數據庫損壞方面的知識,以便我們能夠事前準備,事后能夠處理。本篇文章會對數據庫損壞的原因、現象、事前和事后的一些處理方法以及簡單的修復方法進行探討。

數據庫為什么會損壞?

在了解數據庫損壞之前,首先我們要了解SQL Server是如何將數據保存到數據文件(MDF、NDF等)。無論更新還是插入數據,數據都需要首先在內存中的Buffer Pool駐留,然后通過CheckPoint和Lazy Writer等過程將內存中的數據持久化到磁盤。在這個過程中,數據臟頁由內存寫入持久化的IO子系統,在此期間,按照IO子系統的不同,數據可能經過這幾層:

Windows(寫數據一定調用的是WINDOWS API)

Windows底層的中間層(殺毒軟件,磁盤加密系統)

網卡、路由器、交換機、光釬、網線等(如果IO子系統不是直連的話)

SAN控制器(如果使用了SAN)

RAID控制器(IO子系統做了RAID)

磁盤或SSD等持久化存儲器

因此,數據頁被寫入持久化存儲期間,可能經過上述列表中的幾項。在經歷上述過程中,硬件環境會受到很多方面的影響,比如說電壓是否穩定、斷電、溫度過高或過低、潮濕程度等,而軟件方面,由于軟件都是人寫的,因此就可能存在BUG,這些都可能導致數據頁在傳輸過程中出現錯誤。

此外,影響磁盤的因素也包括電壓是否穩定、灰塵等因素,這些也有可能引起磁盤壞道或整體損壞。

上面提到的所有因素都可以被歸結為IO子系統。因此,造成數據損壞的情況絕大部分是由IO子系統引起的,還有非常非常小的概率內存芯片也會導致數據頁損壞,但這部分情況微乎其微,因此不在本文的討論之列。

上面提到的這些導致數據損壞的原因都屬于天災,還有一些人禍。比如說通過編輯器等手動編輯數據文件、數據庫中還有需要Redo和Undo的事務時(也就是沒有Clean Shutdown)刪除了日志文件(通常會導致數據庫質疑)。

發現數據庫損壞

在我們知道可能造成數據庫的損壞原因之后,接下來我們來看SQL Server是如何監測數據庫頁損壞的。

在SQL Server的數據庫級別,可以設置頁保護類型,一共有三個選項:None,CheckSum,Torn_Page_Detection,如圖1所示:


圖1.頁保護的三種選項

關于這三種選項,首先,請無視None,請不要在任何場景下選擇該選項,該選項意味著SQL Server不對頁進行保護。

其次是TORN_PAGE_DETECTION,在SQL Server中,數據的最小單位是頁,每一頁是8K,但是對應磁盤上往往是16個512字節的扇區,如果一個頁在寫入持久化存儲的過程中,只寫了一半的頁,這就是所謂的TORN_PAGE_DETECTION,SQL Server通過每個扇區提512字節中前2位作為元數據,總共16個扇區32位4字節的元數據(頁頭中標識為:m_tornBits),通過該元數據來檢測是否存在部分寫的TORN_PAGE,但該類型的頁驗證無法檢測出頁中的寫入錯誤,因此在SQL Server 2005及以上版本,盡量選擇CheckSum。

在SQL Server 2005及以上版本,引入了CheckSum,CheckSum可以理解為校驗和,當數據頁被寫入持久化存儲時,會根據頁的值計算出一個4字節的CheckSum存于頁頭(頁頭中標識同為:m_tornBits),和數據在同一頁中一起保存在數據庫中。當數據從IO子系統被讀取到內存中時,SQL Server會根據頁內的值再次計算CheckSum,用該重新計算的CheckSum和頁頭中存儲的CheckSum進行比對,如果比對失敗,則SQL Server就會認為該頁被損壞。

由CheckSum的過程可以看出,只有在頁被寫入SQL Server的過程中才會計算CheckSum,因此如果僅僅改變數據庫選項的話,則頁頭中的該元數據并不會隨之改變。

與IO相關的三種錯誤

通過上述CheckSum的原理可以看出,SQL Server可以檢測出頁損壞,此時,具體的表現形式可能為下述三種錯誤的一種:

823錯誤,也就是所謂的硬IO錯誤,可以理解為SQL Server希望讀取頁,而Windows告訴SQL Server,無法讀取到該頁。

824錯誤,也就是所謂的軟IO錯誤,可以理解為SQL Server已經讀取到該頁,但通過計算CheckSum等值發現不匹配,因此SQL Server認為該頁已經被損壞。

825錯誤,也就是所謂Retry錯誤。

其中, 上述823和824錯誤都是錯誤等級為24的嚴重錯誤,因此會被記錄在Windows應用程序日志和SQL Server的錯誤日志中,而引起該錯誤的頁會被記錄在msdb.dbo.suspect_pages中。SQL Server錯誤日志中也會記錄到出錯頁的編號,如圖2所示。


圖2.824錯誤在SQL Server錯誤記錄中的描述

因此,如果我們存在完善的備份的話,我們可以通過備份進行頁還原(在此再次強調一下對于DBA來說,有”備”無患),一個簡單的頁還原代碼如代碼清單1所示。

USE [master]
RESTORE DATABASE [Corrupt_DB] PAGE='1:155' 
FROM  DISK = N'C:\xxx.bak' 
WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5

代碼清單1.一個簡單的頁還原代碼,從備份中還原文件ID1中的第155頁

記得我們前面說的,在讀取頁計算校驗和時出錯,這既可能是被寫入持久化存儲的頁本身出錯,也可能是在頁被讀取的過程中出錯,此時SQL Server會嘗試從IO子系統中再次讀取該頁,最多可能是4次嘗試,如果在4次嘗試過程中校驗和通過,則會是825錯誤,否則是824錯誤。這里要注意,與823和824錯誤不同的是,825錯誤是一個等級僅為10的信息。

因此,由于有固定的錯誤編號,因此可以在SQL Server Agent中對823和824設置警報。

備份CheckSum

上述頁CheckSum只有在頁被使用時才會被校驗頁的正確性。在備份數據庫時,可以指定CheckSum選項來使得備份讀取的頁也計算校驗和,從而保證了被備份的數據庫是沒有損壞的。在圖3的備份選項我們可以注意到這兩條:


圖3.CheckSum和Continue_After_Error選項

如果啟用了CheckSum,當備份過程中發現了頁校驗和錯誤時,就會終止備份,而啟用了Continue_After_Error選項的話,在檢測到校驗和錯誤時,仍然繼續從而使得備份成功。

備份如果啟用了CheckSum選項,除去檢測每一頁的校驗和之外,還會在備份完成后,對整個備份計算校驗和并存儲于備份頭中。

此外,對于備份,我們還可以通過Restore Verifyonly with CheckSum來驗證備份,來保證備份的數據沒有被損壞。

DBCC CheckDB

前面提到SQL Server發現錯誤的方法有兩種,分別為在讀取頁時和在備份時(本質上也是讀取頁)。但如果我們希望對于數據一致性的檢查更加的激進,那我們應該定期使用CheckDB來檢查數據的一致性,而不至于在生產時間數據被讀取時才能發現錯誤。

CheckDB命令會對整個數據庫做所有的一致性檢查。當檢查對象是Master數據庫時,CheckDB還會檢查ResourceDB。

CheckDB最簡單的用法如代碼清單2所示,在當前數據庫上下文中直接執行CheckDB,將會檢查當前數據庫中所有的一切。

DBCC CHECKDB

代碼清單2.CheckDB最簡單的用法

CheckDB命令在企業版中會使用多線程來進行,會對整個數據庫進行一致性檢查,在該過程中,使用了內建數據庫快照的方式進行,因此不會造成阻塞,但CheckDB會消耗大量的CPU、內存和IO。因此CheckDB要選擇在維護窗口時間或是系統閑時進行。

默認情況下,CheckDB命令會將輸出所有的信息,但通常我們并不關心這些信息,而是只關心錯誤信息,因此實際中通常給DBCC指定不顯式信息的參數,如代碼清單3所示。

DBCC CHECKDB WITH NO_INFOMSGS;

代碼清單3.CheckDB通常搭配No_InfoMsgs參數

實際上,CheckDB是一套命令的匯總,CheckDB會依次檢查下述內容:

初次檢查系統表

分配單元檢查(DBCC CHECKALLOC)

完整檢查系統表

對所有表進行一致性邏輯檢查(DBCC CHECKTABLE)

元數據檢查(DBCC CHECKCATALOG)

SSB檢查

索引視圖、XML索引等檢查

首先,當發現系統表損壞時,只能通過備份進行恢復(這也是為什么備份除TempDB之外的系統表非常重要)。其次,在一個大數據庫中,做一次CheckDB時間會非常長,維護窗口時間或系統閑時的時間可能無法Cover這段時間,那么我們可以將CheckDB的任務分散到CHECKALLOC、DBCC CHECKTABLE、DBCC CHECKCATALOG這三個命令中。

更多關于CheckDB的詳細信息,請參閱:http://technet.microsoft.com/en-us/library/ms176064.aspx。

數據庫損壞的修復

數據庫損壞最

關鍵詞:SQL,數據庫,解決方案

閱讀本文后您有什么感想? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
一区二区三区在线视频播放_一区在线播放视频_欧美.com_亚洲精品无人区_久久亚洲精品视频_国产精品久久久久久久免费软件_久久av一区二区三区_欧美国产日韩精品免费观看_亚洲一区自拍_91久久国产精品91久久性色_亚洲一区二区三区在线播放_久久久久久久一区_国产精品一区二区久久久_精品成人国产_亚洲欧洲精品一区二区三区波多野1战4_在线观看亚洲精品
激情婷婷久久| 久久久久女教师免费一区| 亚洲欧美一区在线| 亚洲精品婷婷| 国产日产精品一区二区三区四区的观看方式| 蜜桃精品一区二区三区| 久久大综合网| 欧美久久久久| 午夜视频精品| 国内伊人久久久久久网站视频| 欧美日韩国产小视频在线观看| 午夜精品影院在线观看| 国产精品video| 欧美激情一区二区三区不卡| 国产精品亚洲а∨天堂免在线| 国产一区二区三区精品欧美日韩一区二区三区| 欧美中文字幕| 亚洲伊人久久综合| 国产精品久久亚洲7777| 欧美日韩一区二区三区视频| 欧美日韩视频专区在线播放| 国产欧美日韩视频| 99ri日韩精品视频| 亚洲午夜精品久久久久久app| 亚洲福利专区| 99精品黄色片免费大全| 欧美激情一区二区久久久| 国产精品久久激情| 欧美绝品在线观看成人午夜影视| 欧美高清在线精品一区| 夜夜嗨av一区二区三区网页| 亚洲精品久久视频| 久久久久久**毛片大全| 国产精品一区二区欧美| 亚洲视频狠狠| 欧美xxx在线观看| 极品av少妇一区二区| 国产噜噜噜噜噜久久久久久久久| 午夜精品亚洲一区二区三区嫩草| 先锋影院在线亚洲| 99视频精品全国免费| 久久国产99| 久久精品国产一区二区三区免费看| 久久精品99无色码中文字幕| 另类综合日韩欧美亚洲| 日韩一级视频免费观看在线| 欧美日韩在线免费观看| 亚洲国产精品悠悠久久琪琪| 欧美激情一级片一区二区| 好看不卡的中文字幕| 亚洲免费在线视频一区 二区| 国内久久精品视频| 一个色综合导航| 国模私拍一区二区三区| 亚洲精品一区二区三区婷婷月| 麻豆精品在线播放| 亚洲欧美精品伊人久久| 久久精品国产69国产精品亚洲| 欧美日韩影院| 一区二区三区精品| 欧美一级视频免费在线观看| 亚洲高清二区| 亚洲欧洲日韩在线| 欧美1区3d| 亚洲精品四区| 亚洲小说欧美另类婷婷| 亚洲福利在线视频| 91久久中文字幕| 国产伊人精品| 欧美一级淫片aaaaaaa视频| 国产日本欧美一区二区| 亚洲在线不卡| 欧美高清视频在线观看| 日韩午夜精品| 中日韩美女免费视频网站在线观看| 欧美在线一区二区三区| 国产精品第13页| 亚洲在线中文字幕| 亚洲国产美女久久久久| 亚洲激情网址| 午夜精品美女久久久久av福利| 国产欧美亚洲日本| 老司机午夜免费精品视频| 国产一在线精品一区在线观看| 亚洲卡通欧美制服中文| 亚洲欧美日韩综合国产aⅴ| 国产欧美日韩专区发布| 久久久久久久网| 亚洲无线观看| 韩国精品一区二区三区| 国产日韩亚洲欧美| 欧美日韩精品一区| 午夜久久美女| 久久久久久久欧美精品| 欧美日本免费| 久久久久国产一区二区三区四区| 久久精品日韩欧美| 亚洲一区三区电影在线观看| 亚洲私人影院在线观看| 国产精品女人毛片| 欧美日韩国产一级片| 国产精品国产三级国产aⅴ入口| 久久久久久婷| 亚洲成色999久久网站| 欧美大片va欧美在线播放| 欧美日韩午夜| 一区二区三区四区在线| 欧美视频一区二区在线观看| 欧美日韩午夜视频在线观看| 亚洲一区精彩视频| 亚洲午夜视频在线观看| 精品1区2区| 亚洲区国产区| 亚洲视频导航| 亚洲一区二区三区在线观看视频| 免费久久99精品国产自在现线| 怡红院av一区二区三区| 国产一区欧美| 亚洲精品色婷婷福利天堂| 欧美三级日韩三级国产三级| 久久九九精品99国产精品| 欧美日韩一区二区三区在线视频| 亚洲国产欧美久久| 欧美色网在线| 亚洲欧洲一区二区在线播放| 校园春色综合网| 老色批av在线精品| 国产精品福利在线观看| 欧美日韩亚洲免费| 国产欧美一区二区三区在线老狼| 99精品视频网| 欧美另类综合| 欧美午夜不卡影院在线观看完整版免费| 伊人成人在线视频| 在线亚洲一区| 激情成人综合网| 欧美激情视频一区二区三区不卡| 欧美一级播放| 国产欧美精品一区aⅴ影院| 亚洲国产精品激情在线观看| 亚洲一区二区黄色| 一区二区高清| 久久成人18免费网站| 理论片一区二区在线| 亚洲免费在线| 亚洲新中文字幕| 影音先锋中文字幕一区二区| 99精品视频免费| 久久激情中文| 亚洲男人av电影| 亚洲国产aⅴ天堂久久| 久久亚洲私人国产精品va媚药| 欧美一区二区三区在线免费观看| 亚洲免费视频中文字幕| 午夜性色一区二区三区免费视频| 激情成人中文字幕| 亚洲专区一区| 在线成人中文字幕| 国产精品久久久久一区二区| 在线亚洲自拍| 国产精品私拍pans大尺度在线| 亚洲欧美日韩国产综合| 国产丝袜一区二区| 国产日韩综合|