千家信息网

数据库完整性检查

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,为了主动发现数据库侧页损坏,保证数据库逻辑和物理完整性,计划每周六上午6点,针对生产主库上的所有系统和用户数据库执行DBCC CHECKDB,将结果记录到表中。以下为理论依据:SQL Server数据
千家信息网最后更新 2025年11月10日数据库完整性检查

为了主动发现数据库侧页损坏,保证数据库逻辑和物理完整性,计划每周六上午6点,针对生产主库上的所有系统和用户数据库执行DBCC CHECKDB,将结果记录到表中。


以下为理论依据:


SQL Server数据库可以检测出页损坏,此时,具体的表现形式可能为下述三种错误的一种:

  • 823错误,也就是所谓的硬IO错误,可以理解为SQL Server希望读取页,而Windows告诉SQL Server,无法读取到该页。

  • 824错误,也就是所谓的软IO错误,可以理解为SQL Server已经读取到该页,但通过计算CheckSum等值发现不匹配,因此SQL Server认为该页已经被损坏。

  • 825错误,也就是所谓Retry错误。


SQL Server发现错误的方法有两种,分别为在读取页时和在备份时(本质上也是读取页)。但如果我们希望对于数据一致性的检查更加的全面,那我们应该定期使用CheckDB来检查数据的一致性,而不至于在生产时间数据被读取时才能发现错误。


CheckDB命令在企业版中会使用多线程来进行,会对整个数据库进行一致性检查,在该过程中,使用了内建数据库快照的方式进行,因此不会造成阻塞,但CheckDB会消耗大量的CPU、内存和IO。因此CheckDB要选择在维护窗口时间或是系统闲时进行。


实际上,CheckDB是一套命令的汇总,通过执行下列操作检查指定数据库中所有对象的逻辑和物理完整性:

  • 初次检查系统表

  • 分配单元检查(DBCC CHECKALLOC

  • 完整检查系统表

  • 对所有表进行一致性逻辑检查(DBCC CHECKTABLE

  • 元数据检查(DBCC CHECKCATALOG

  • SSB检查

  • 索引视图、XML索引等检查


微软最佳实践建议


"建议您使用 PHYSICAL_ONLY 选项,以便可以频繁检查生产系统。 使用 PHYSICAL_ONLY 可以极大地缩短对大型数据库运行 DBCC CHECKDB 的运行时间。 同时建议您定期运行没有选项的 DBCC CHECKDB 应当以什么频率执行这些运行任务将取决于各个企业及其生产环境。

"引用自:

https://docs.microsoft.com/zh-cn/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql


成熟的方案


可以使用 https://ola.hallengren.com/

实现备份、完整性检查、索引和统计信息维护整套方案。


检查 数据 错误 数据库 系统 一致 一致性 生产 运行 完整性 也就是 建议 时间 索引 逻辑 企业 命令 备份 方案 物理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 传奇几个区能否共用一个数据库 中职学校网络安全教育 h5 离线本地数据库 软件开发环境一般有哪些 登录游戏突然显示无法连接服务器 数据库项目实施经验总结 电大计算机网络技术形考作业二 厦门地名数据库 漳州网络安全教育平台登录 126邮箱邮件服务器 软件开发诚信正直的实践方案 单位网络安全工作简报 软件开发老师资质有哪些 涡阳县非琪网络技术服务部 天津现代化软件开发技术规范 阿阳家族的服务器叫什么 唐山网络安全等级保护认证 软件开发免哪些税 数据库名称怎么连接 网络安全月宣传周主题 我的世界2服务器突然进不去了 连云港市 网络安全保护支队 群晖数据库服务器怎么用 c#从数据库读取某个数据 万方数据库 维护 sygon服务器修改管理口 延庆区综合网络技术服务质量推荐 浙江网络安全硬件设备提供商 加乐网络技术公司新闻 国外的索引数据库
0