SQL Server誤區30日談-Day16-資料的損壞和修復

25minutes發表於2021-09-09

    本系列文章是我在sqlskill.com的PAUL的部落格看到的,很多誤區都比較具有典型性和代表性,原文來自T-SQL Tuesday #11: Misconceptions about.... EVERYTHING!!,經過我們團隊的翻譯和整理釋出在AgileSharp上。希望對大家有所幫助。

 

誤區 #16:多個關於資料的損壞和修復誤區

坊間流傳的很多版本都不正確

  

    我已經聽過很多關於資料修復可以做什麼、不可以做什麼、什麼會導致資料損壞以及損壞是否可以自行消失。其實我已經針對這類問題寫過多篇博文,因此本篇博文可以作為“流言終結者”來做一個總結,希望你能有收穫。

    首先,對於資料修復可以做什麼,不可以做什麼,我已經寫過一篇博文Misconceptions around database repair涵蓋了13個誤區—從不用DBCC CHECKDB是否能修復錯誤(當然不能)到REPAIR_ALLOW_DATA_LOSS是否會引起資料丟失(這個名字的確很讓人迷惑)。

    其次,很多人抱怨說DBCC CHECKDB第一次執行時顯示的錯誤在第二次執行時會自行消失。這很好解釋:第一次由DBCC CHECKDB檢測出的錯誤頁已經不屬於頁分配集了,因此在第二次執行DBCC時就顯示不出來了。我有一篇博文對此進行了詳細的解釋:Misconceptions around corruptions: can they disappear?。

    還有一個傳的很廣泛的流言是,執行時間長的操作(比如索引重建,大容量資料插入,資料庫或檔案的收縮)會導致頁損壞。其實不然,除非SQL Server存在BUG的情況下(非常罕見)。沒有任何T-SQL語句會導致資料出錯。我幾年前寫過一篇文章對此進行了詳細的解釋:Search Engine Q&A #26: Myths around causing corruption。

 

    希望這篇文章對澄清這個概念有幫助

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2806182/,如需轉載,請註明出處,否則將追究法律責任。

相關文章