程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL Server誤區30日談 第16天 數據的損壞和修復

SQL Server誤區30日談 第16天 數據的損壞和修復

編輯:更多數據庫知識

誤區 #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。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved