Tom*_*ath 9 sql-server dbcc-checkdb sql-server-2019
问题陈述我刚刚在示例 WideWorldImporters 数据库上
运行。dbcc checkdb当我运行此命令时,我收到了 (4) 个有关统计数据损坏的错误,我不记得过去曾见过这些错误。虽然这只是一个示例数据库,但我很好奇,因为我不想在真实的数据库中看到类似的错误。
SSMS 和 Windows 版本
SSMS:18.10 (15.0.18390.0) / Windows 10:版本 21H1(操作系统内部版本 19043.1526)
SQL Server 开发人员版本
Microsoft SQL Server 2019 (RTM-CU13) (KB5005679) - 15.0.4178.1 (X64) 2021 年 9 月 23 日 16:47:49 版权所有 (C) 2019 Microsoft Corporation Developer Edition(64 位),适用于 Windows 10 Pro 10.0 (内部版本 19043:)
SSMS 中发出的命令:
dbcc checkdb ([WideWorldImporters]) with all_errormsgs, data_purity, extended_logical_checks , no_infomsgs;
go
Run Code Online (Sandbox Code Playgroud)
错误信息
消息 9122,级别 16,状态 201,第 10 行
统计信息“sys.TT_OrderIDList_22AA2996.PK__TT_Order__C3905BAE80B57D6F”已损坏。
消息 9122,级别 16,状态 201,第 10 行
统计信息“sys.TT_OrderLineList_24927208.IX_Website_OrderLineList”已损坏。
消息 9122,级别 16,状态 201,第 10 行
统计信息“sys.TT_OrderList_25869641.PK__TT_Order__288FD689F5006DE2”已损坏。
消息 9122,级别 16,状态 201,第 10 行
统计信息“sys.TT_SensorDataList_276EDEB3.PK__TT_Senso__88385F3043E9E8D9”已损坏。
CHECKDB 在数据库“WideWorldImporters”中发现 0 个分配错误和 4 个一致性错误。
我尝试修复后
很快发现我没有删除 sys.* 索引所需的权限。我尝试从上次备份中恢复数据库,但这产生了完全相同的错误消息。
接下来,我打开此网页下载新副本:
https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0
我下载了“WideWorldImporters-Full.bak”(121 MB),清除了属性中的“Mark of the Web”(MOTW),并成功恢复了数据库。但是,在运行上面显示的相同 dbcc checkdb 命令后,我收到了完全相同的错误!
最后,我下载了“WideWorldImporters-Full.bacpac”(59.1 MB),清除了属性中的“Mark of the Web”(MOTW),并成功恢复了数据库。这也导致了上面所示的相同dbcc checkdb错误。
我显然不记得曾经收到过这些错误,这让我想知道我当前版本的 Windows、SSMS 或 SQL Developer 中是否存在导致这些错误的“问题”?
谢谢
该错误消息有点误导。并不是与主键索引关联的统计对象已损坏;而是与主键索引相关的统计对象已损坏。相反,当指定 时,DBCC 检查统计数据损坏会遇到断言失败,EXTENDED_LOGICAL_CHECKS并且代码尝试获取 Hekaton 表类型索引的索引大小。EXTENDED_LOGICAL_CHECKS如果未指定,这些对象将被视为不受支持而被跳过。
当然,这是一个只有微软才能修复的错误,而且我确实意识到这对于现实世界的数据库来说不是问题。尽管如此,明显的解决方法是跳过EXTENDED_LOGICAL_CHECKS.
如果这并不理想,也可以通过在DBCC CHECKDB语句运行时暂时禁用 Hekaton 对象的自动统计信息更新来跳过有问题的检查。没有记录的方法可以执行此操作,但全局跟踪标志 9823 确实执行该功能:
DBCC TRACEON (9823, -1);
DBCC CHECKDB (WideWorldImporters)
WITH
ALL_ERRORMSGS,
DATA_PURITY,
EXTENDED_LOGICAL_CHECKS,
NO_INFOMSGS;
DBCC TRACEOFF (9823, -1);
Run Code Online (Sandbox Code Playgroud)
如果您没有 Microsoft 支持协议,或者不想完成该流程,您可以在http://aka.ms/sqlfeedback留下反馈。
此错误已在SQL Server 2019 CU17中修复。
我可以在 2019 CU15 开发者版上重现您的问题。我最初安装了 2019 RTM,并且 dbcc 恢复正常。
经过一些调查,这些统计信息似乎与用户定义的表类型相关联。我尝试仅删除/重新创建 UDT,但遇到了同样的问题。仅当从 UDT 中删除内存优化属性(并相应地更改相关过程)时,checkdb 才会恢复干净。
我建议向 MS 提出问题并指出他们自己的示例数据库。希望这能缩短他们的故障排除过程。
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |