首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >physical_only、full和data_purity之间的dbcc checkdb差异

physical_only、full和data_purity之间的dbcc checkdb差异
EN

Database Administration用户
提问于 2021-03-25 21:44:41
回答 1查看 317关注 0票数 0

有一件事让我迷失了方向。根据MS docs完整的checkdb (没有选项),列值检查,那么运行data_purity的好处是什么?所谓“增益”,我指的是如何进行详细的检查,我现在没有考虑性能。

我是否正确地理解了,如果数据库是在SQL2005之前创建的,它将dbi_dbccFlags设置为0,而完整的checkdb将跳过列值检查,但是一旦这样的数据库至少有一个成功的data_purity检查,标志将被设置为2,并且在每个完整的校验数据库期间将进行列值检查?如果数据库是用SQL2005+创建的,默认情况下它会将dbi_dbccFlags设置为2,然后使用完全校验be (没有选项),而使用data_purity则是相同的检查吗?

此外,估计似乎表明,对于SQL2005+来说,这两种检查之间没有区别,至少如果涉及到TempDB中需要的空间:

  • DBCC (‘AdventureWorks2019’)与PHYSICAL_ONLY,ESTIMATEONLY

DBCC的结果为'AdventureWorks2019‘。

估计数据库AdventureWorks2019 = 39189上的CHECKDB所需的TEMPDB空间( KB)。

  • DBCC (‘AdventureWorks2019’)具有ESTIMATEONLY

DBCC的结果为'AdventureWorks2019‘。

估计数据库AdventureWorks2019 = 225996上的CHECKDB所需的TEMPDB空间( KB)。

  • DBCC (‘AdventureWorks2019’)与DATA_PURITY,ESTIMATEONLY

DBCC的结果为'AdventureWorks2019‘。

估计数据库AdventureWorks2019 = 225996上的CHECKDB所需的TEMPDB空间( KB)。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-03-25 23:40:14

我是否正确地理解了,如果数据库是在SQL2005之前创建的,它将dbi_dbccFlags设置为0,而完整的checkdb将跳过列值检查,但是一旦这样的数据库至少有一个成功的data_purity检查,标志将被设置为2,并且在每个完整的校验数据库期间将进行列值检查?如果数据库是用SQL2005+创建的,默认情况下它会将dbi_dbccFlags设置为2,然后使用完全校验be (没有选项),而使用data_purity则是相同的检查吗?

是的,这就对了。您只需要在2005年前创建的数据库上启用运行CHECKDB的DATA_PURITY选项一次,如果结果是干净的,那么没有该选项的后续CHECKDB将自动包含检查。它是2005年标准CHECKDB流程的一部分,也是上面创建的数据库的一部分。

此外,估计似乎表明,对于SQL2005+来说,这两种检查之间没有区别,至少如果涉及到TempDB所需的空间

这是因为它是相同的检查过程--该选项在SQL2005+创建的数据库中不会产生任何效果,因为CHECKDB将检查作为标准。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/287720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档