首先,對于數據修復可以做什么,不可以做什么,我已經寫過一篇博文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 QA #26: Myths around causing corruption。
希望這篇文章對澄清這個概念有幫助
您可能感興趣的文章:
SQL Server誤區30日談 第29天 有關堆碎片的誤區
SQL Server誤區30日談 第28天 有關大容量事務日志恢復模式的誤區
SQL Server誤區30日談 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB
SQL Server誤區30日談 第26天 SQL Server中存在真正的“事務嵌套”
SQL Server誤區30日談 第25天 有關填充因子的誤區
SQL Server誤區30日談 第24天 26個有關還原(Restore)的誤區
SQL Server誤區30日談 第23天 有關鎖升級的誤區
SQL Server誤區30日談 第22天 資源調控器可以調控IO
SQL Server誤區30日談 第21天 數據損壞可以通過重啟SQL Server來修復
SQL Server誤區30日談 第20天 破壞日志備份鏈之后,需要一個完整備份來重新開始日志鏈
SQL Server誤區30日談 第19天 Truncate表的操作不會被記錄到日志
SQL Server誤區30日談 第18天 有關FileStream的存儲,垃圾回收以及其它
SQL Server誤區30日談 第17天 有關頁校驗和的誤區
SQL Server誤區30日談 第15天 CheckPoint只會將已提交的事務寫入磁盤
SQL Server誤區30日談 第14天 清除日志后會將相關的LSN填零初始化
SQL Server誤區30日談 第13天 在SQL Server 2000兼容模式下不能使用DMV