AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 115486
Accepted
Aaronaught
Aaronaught
Asked: 2010-02-23 10:00:43 +0800 CST2010-02-23 10:00:43 +0800 CST 2010-02-23 10:00:43 +0800 CST

为什么 DBCC CHECKTABLE 在不存在的页面上报告错误?

  • 772

当我运行时DBCC CHECKDB,我会收到大量这样的错误消息:

表错误:对象 ID 2020918271,索引 ID 1,分区 ID 72057594196590592,分配单元 ID 72057594190233600(行内数据类型),页面 (4:129574),行 0。记录检查(有效的 UDT 列)失败。值为 3 和 0。

现在我只是想了解这个错误的含义以及它的严重程度——它似乎是一些与校验和相关的错误,可能没有那么严重。最近的备份似乎也有同样的问题,但无论哪种方式都不是什么大问题,因为可以从其他来源重新创建数据。

无论如何,我正试图深入了解这一点,也许了解哪些行已损坏,如果有任何特定的模式。当我跑去DBCC PAGE看里面有什么的时候,比如下面的语句:

DBCC PAGE('MyDB', 4, 129574, 3)

它什么也没显示。纳达。压缩。只是标准:

DBCC 执行完成。如果 DBCC 打印错误消息,请联系您的系统管理员。

但没有错误,也没有页面数据。事实上,出现的每一个错误CHECKTABLE都有一个文件/页码,我从PAGE.

我还从CHECKTABLE输出中看到以下错误,但只是偶尔出现:

表错误:对象 ID 2020918271,索引 ID 1,分区 ID 72057594196590592,分配单元 ID 72057594190233600(键入行内数据)。页面 (4:129575) 未在扫描中看到,尽管其父级 (4:129977) 和上一个 (4:129574) 引用了它。检查任何以前的错误。

看起来它可能是相关的,但我不确定如何。UDT 可能相对较大(大约 5 KB),所以它可能是跨页面拆分的,并且其中一个页面丢失了?不过,这只是一个疯狂的猜测。

出来的错误数量CHECKTABLE也让整个表格看起来都是这样,但我知道不是这样,因为我可以很好地读取数据。事实上,有一个每天运行的自动化过程,随着时间的推移,它会读取该表中的几乎所有数据,并且没有报告任何错误。此外,如果我DBCC PAGE在其中一个父页面(确实存在,即使“以前的”页面不存在)上运行,我可以获得键列,并且我可以SELECT获取所有周围键的所有数据而不会出现任何错误。

谁能告诉我这里发生了什么?DBCC CHECKTABLE当所引用的页面甚至不存在时给我这些错误是否有意义?它CHECKTABLE本身是否有可能发出虚假错误?

sql-server sql-server-2008 data-integrity
  • 1 1 个回答
  • 400 Views

1 个回答

  • Voted
  1. Best Answer
    Remus Rusanu
    2010-02-23T10:07:05+08:002010-02-23T10:07:05+08:00

    你打开跟踪标志了DBCC TRACEON(3604)吗?否则 oll DBCC PAGE 输出仅进入错误日志。

    • 3

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve