誤區 #27:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB
錯誤
乍一看,由于BACKUP WITH CHECKSUM會檢測所有分配出去的頁的校驗和的值,這個誤區貌似是這么回事,但實際上并不是這么回事,原因如下:
由SQL Server 2000或是更早版本升上來的數據庫page checksums必須開啟,在開啟后,并不是數據庫中所有的頁都會被叫上頁校驗和,當頁損壞發生時,IO系統可不會區分損壞的頁是有頁校驗和還是沒有校驗和的。所以使用BACKUP ... WITH CHECKSUM就有可能導致一些損壞頁不被發現,造成的后果……
除此之外,還有一個問題是完整備份的時間間隔相對比較長,假如說一個月,而相對于DBCC CheckDB的最佳實踐是一個禮拜,這導致WITH CHECKSUM不能替代CHECKDB。即使你每周都進行差異備份,但差異備份只會檢測差異部分的頁校驗和。
最后一點,也是危害最大的一點,就是使用BACKUP WITH CHECKSUM選項不能發現內存中的頁損壞。這是因為由于內存芯片或是WINDOWS進程導致內存中的頁損壞,并且在這之后寫回磁盤。這導致損壞頁卻有正常的校驗和,只有使用DBCC CheckDB才能發現這類錯誤。
因此,說到底,你必須經常使用DBCC CHECKDB,如果對此你仍然心存疑問,請看我之前的一篇文章:CHECKDB From Every Angle: Consistency Checking Options for a VLDB。
擴展閱讀:Search Engine Q&A #26: Myths around causing corruption
SQL Server誤區30日談 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB
2019-12-28 15:46MSSQL教程網 Sql Server
乍一看,由于BACKUP WITH CHECKSUM會檢測所有分配出去的頁的校驗和的值,這個誤區貌似是這么回事,但實際上并不是這么回事
延伸 · 閱讀
- 2022-03-06C#連接SQL Server的實現方法
- 2022-03-05python讀寫文件with open的介紹
- 2022-03-04SQL Server2012無法連接到服務器的解決方法
- 2022-03-04python編程webpy框架模板之def with學習
- 2022-03-03SQL Server查詢某個字段在哪些表中存在
- 2022-02-25Sql Server之數據類型詳解
- Sql Server
三種SQL分頁查詢的存儲過程代碼
三種SQL分頁查詢的存儲過程代碼,需要的朋友可以參考下。 ...
- Sql Server
SQLServer 數據庫的數據匯總完全解析(WITH ROLLUP)
乍一看,好像很容易,用group by好像能實現?但仔細研究下去,你又會覺得group by也是無能為力,總欠缺點什么,無從下手。那么,到底該如何做呢?別急,...
- Sql Server
SQLServer2005創建定時作業任務
這篇文章主要為大家介紹了SQLServer2005創建定時作業任務的詳細過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下 ...
- Sql Server
SQL2005 存儲過程解密方法
SQL2005 存儲過程解密方法,需要的朋友可以參考下。...
- Sql Server
深入SQLServer中ISNULL與NULLIF的使用詳解
本篇文章是對SQLServer中ISNULL與NULLIF的使用進行了詳細分析介紹,需要的朋友參考下 ...
- Sql Server
SQL_Server全文索引的用法解析
SQL Server全文索引相信大家都有一定的了解,下面就為您介紹SQL Server全文索引的用法及相關的語句,希望可以讓您對SQL Server全文索引能有更深的認識 ...
- Sql Server
SQL JOIN 連接詳細介紹及簡單使用實例
這篇文章主要介紹了SQL JOIN 連接詳細介紹及簡單使用實例的相關資料,需要的朋友可以參考下 ...
- Sql Server
SQLServer2005 批量查詢自定義對象腳本
SQLServer2005 批量查詢自定義對象腳本,使用系統函數object_definition和系統表 sysobjects 就可以了 ...