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
    • 最新
    • 标签
主页 / dba / 问题 / 335432
Accepted
rois
rois
Asked: 2024-02-02 00:20:00 +0800 CST2024-02-02 00:20:00 +0800 CST 2024-02-02 00:20:00 +0800 CST

在辅助副本上运行时,DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS 失败

  • 772

创建尽可能简单的数据库:

CREATE DATABASE DatabaseCheck

将此数据库添加到可用性组,其中辅助数据库不可读

在主要运行中:

DBCC CHECKDB ('DatabaseCheck') WITH EXTENDED_LOGICAL_CHECKS

它成功了:

CHECKDB 在数据库“DatabaseCheck”中发现 0 个分配错误和 0 个一致性错误。DBCC 执行已完成。如果 DBCC 打印了错误消息,请联系您的系统管理员。

在辅助服务器上运行相同的 DBCC 命令。即使未发现任何错误,它仍会失败:

CHECKDB 在数据库“DatabaseCheck”中发现 0 个分配错误和 0 个一致性错误。消息 0,级别 11,状态 0,第 1 行 当前命令发生严重错误。结果(如果有)应被丢弃。

  • 删除 WITHEXTENDED_LOGICAL_CHECKS可消除错误
  • 使辅助副本可读可以消除错误
  • 执行故障转移并检查新的主服务器后错误消失。检查新的辅助服务器后再次显示错误。

知道这是怎么回事吗?检查DBCC CHECKDB 文档没有提到 EXTENDED_LOGICAL_CHECKS 在不可读的辅助副本上不受支持。在我看来,这似乎是命令本身的一个错误。

我在命令输出中注意到的一件事是,它会检查如下统计数据:

已验证统计信息“sys.sysrscols.clst”的完整性。已验证统计信息“sys.sysrowsets.clust”的完整性。已验证统计信息“sys.sysrowsets._WA_Sys_00000002_00000005”的完整性。已验证统计信息“sys.sysrowsets._WA_Sys_00000003_00000005”的完整性。已验证统计信息“sys.sysrowsets._WA_Sys_00000006_00000005”的完整性。已验证统计信息“sys.sysrowsets._WA_Sys_00000004_00000005”的完整性。已验证统计信息“sys.sysrowsets._WA_Sys_00000005_00000005”的完整性。已验证统计信息“sys.sysrowsets._WA_Sys_00000008_00000005”的完整性。

在辅助运行时不存在这些

转载于:

Microsoft SQL Server 2019 (RTM-CU23) (KB5030333) - 15.0.4335.1 (X64) 2023 年 9 月 21 日 17:28:44 版权所有 (C) 2019 Microsoft Corporation 开发人员版(64 位)在 Windows Server 2019 Standard 10.0(内部版本 17763:)上

编辑:

错误日志中唯一的消息是:

Domain\user 执行的 DBCC CHECKDB (DatabaseCheck) 发现 0 个错误并修复了 0 个错误。耗时:0 小时 0 分钟 0 秒。内部数据库快照具有分割点 LSN = 00000034:000001b1:0001 和第一个 LSN = 00000034:000001af:0002。

sys.dm_server_memory_dumps 中没有最近的转储

sql-server-2019
  • 1 1 个回答
  • 94 Views

1 个回答

  • Voted
  1. Best Answer
    TheLowox
    2024-06-26T16:26:47+08:002024-06-26T16:26:47+08:00

    我已经向 Microsoft 提交了一张票,因为我们在生产环境中遇到了这个“问题”。我希望这能为大家澄清这个问题,因为文档一开始就不是那么明显。

    简短回答:扩展逻辑检查需要对数据库的读取访问权限。

    票上的长答案:

    问题:

    客户尝试在辅助不可读副本上运行“DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS”,但失败并显示:错误:976 状态 14。请参见图 1。这在 SQL 2019 和 2022(最新 CU)上可重现。如果辅助副本被标记为可读,则此过程成功且没有任何错误。

     

    解决:

    我可以确认,这种行为是设计使然。根据我们使用“EXTENDED_LOGICAL_CHECKS”的文档(...对索引视图、XML 索引和空间索引执行逻辑检查...)。

      DBCC CHECKDB (Transact-SQL) - SQL 服务器

     

     

    此行为是设计使然,因为要执行一致性检查,我们需要对数据库的读取权限。

    (即 引用同一篇文章...。{ }这些逻辑一致性检查将索引对象的内部索引表与其引用的用户表进行交叉检查。为了找到离群行,构建了一个内部查询来执行内部表和用户表的完全交集...){ }

     

    我还检查了堆栈转储并发现错误 976,这也证实我们正在尝试读取数据。

    定义:

    976 - 14
    The target database, '%.*ls', is participating in an availability group and is currently not accessible for queries. 
    Either data movement is suspended or the availability replica is not enabled for read access. 
    To allow read-only access to this and other databases in the availability group, 
    enable read access to one or more secondary availability replicas in the group.
    For more information, see the ALTER AVAILABILITY GROUP statement in SQL Server Books Online.
    

     

    • 2

相关问题

  • SQL Server 评估期已过期

  • 新的系统存储过程 sys.xp_delete_files 与 sys.xp_delete_file 有何不同?

  • 从 SQL Server 2012 SP1 升级到 SQL Server 2019

  • MS SQL Server 是否有 generate_series 功能

  • 如何启用 SQL Server 2019 的结果集缓存?

Sidebar

Stats

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

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve