【SQL Server】DBCC CHECKDB只是一个数据库维护命令吗?

news2024/9/20 8:42:28

日期:2023年7月27日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


在这里插入图片描述


文章目录

  • 一、前言
  • 二、DBCC CHECKDB是什么
  • 三、DBCC CHECKDB数据库维护
  • 四、DBCC CHECKDB数据库修复
  • 五、更多常见的 DBCC 命令


一、前言

在了解 DBCC CHECKDB之前,我们先来弄明白 DBCC是什么?

DBCCSQL Server中的一个命令,代表 Database Console Commands,即数据库控制台命令。它提供了一系列用于执行数据库管理任务和诊断操作的命令

DBCC CHECKDB 是其中一个最为常见的命令,该命令用于数据库完整性检查,主要检查数据库的物理和逻辑完整性,查找并报告数据库中的错误和问题。当然,也可以做一些简单的数据库的错误修复工作。

二、DBCC CHECKDB是什么

DBCC CHECKDBMicrosoft SQL Server 中用于检查数据库完整性的命令。它是一个数据库维护命令,用于检查数据库的物理和逻辑完整性,以及查找和修复数据库中的错误。

使用 DBCC CHECKDB 可以帮助您发现数据库中可能存在的以下问题:

  • 确保数据库文件的物理完整性,如页面级别的损坏、丢失或交叉链接等。
  • 检查数据库中的索引是否有效,以及索引是否存在损坏或逻辑错误。
  • 检查表之间的引用完整性,以及外键关系是否存在问题。
  • 查找数据库中的逻辑一致性错误,如数据库对象的状态是否正确、分区表的一致性等。
  • 检查数据库的系统表结构是否正确。

三、DBCC CHECKDB数据库维护

要运行 DBCC CHECKDB 数据库维护命令,请使用以下 SQL 语法:

DBCC CHECKDB 
(
    { database_name | database_id | 0}
)
[ WITH 
    {
	    [ ALL_ERRORMSGS ]
	    [ , EXTENDED_LOGICAL_CHECKS ]
	    [ , NO_INFOMSGS ]
	    [ , TABLOCK ]
	    [ , ESTIMATEONLY ]
	    [ , PHYSICAL_ONLY ]
	    [ , DATA_PURITY ]
    }
]
  • database_name | database_id | 0:指定要检查的数据库的名称、数据库 ID 或 0(表示检查当前数据库)。
  • ALL_ERRORMSGS:显示所有错误消息(默认为仅显示错误消息)。
  • EXTENDED_LOGICAL_CHECKS:执行扩展的逻辑检查。这可能需要较长时间。
  • NO_INFOMSGS:不显示信息消息。
  • TABLOCK: 在运行 DBCC CHECKDB 时对数据库加锁。这可以防止其他用户访问数据库,但可能会影响数据库的可用性。
  • ESTIMATEONLY: 只返回估计的检查资源使用情况,而不执行实际检查。
  • PHYSICAL_ONLY:仅执行物理完整性检查。
  • DATA_PURITY:检查数据完整性,包括对日期、时间和二进制数据类型的额外检查。
    例如,运行以下命令来检查名为 “YourDatabaseName” 的数据库:
DBCC CHECKDB ('<DatabaseName>');

其中,<DatabaseName> 填写我们需要检查的数据库名称。

DBCC CHECKDB 命令可以在维护数据库时定期运行,以确保数据库的完整性,并在发现问题时及时采取修复措施。请注意,运行此命令可能会产生一些系统负载,因此最好在非高峰时段运行。在生产环境中运行之前,最好先在测试环境中进行测试并备份数据库。

四、DBCC CHECKDB数据库修复

要运行 DBCC CHECKDB 数据库修复命令,请使用以下 SQL 语法:

 DBCC CHECKDB 
(
    { database_name | database_id | 0}
	[ , NOINDEX ]  
	[ , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]  
)

第一个参数上面已经介绍过了,这里就不再赘述;

第二个参数 NOINDEX 是一个可选参数,用于指定是否忽略对索引的检查。当指定 NOINDEX 参数时,将只检查表和索引的物理完整性,而不检查索引的逻辑完整性。

-- 检查数据库,并忽略索引检查
DBCC CHECKDB ('<DatabaseName>', NOINDEX);

第三个参数才是重头戏,用于指定在发现数据库问题时的修复行为。值得一提的是,修复可能导致数据丢失,最好先备份后再修复,把损失降到最低

先备份,再修复
先备份,再修复
先备份,再修复

讲了三遍,表示很重要,划重点要考哦 ^ - ^

  • REPAIR_ALLOW_DATA_LOSS: 当发现数据库问题时,允许尝试进行修复,即使可能会导致数据丢失。这是最激进的修复选项,应该谨慎使用
  • REPAIR_FAST: 尝试使用较少的资源和较少的日志记录来进行修复,但不保证能够解决所有问题。这个选项比较保守,适用于紧急情况下的快速修复。
  • REPAIR_REBUILD: 尝试使用较多的资源和更多的日志记录来进行修复,以确保尽可能完整地修复数据库中的问题。
-- 检查并尝试使用 REPAIR_ALLOW_DATA_LOSS 修复数据库
DBCC CHECKDB ('<DatabaseName>', REPAIR_ALLOW_DATA_LOSS);

-- 检查并尝试使用 REPAIR_FAST 修复数据库
DBCC CHECKDB ('<DatabaseName>', REPAIR_FAST);

-- 检查并尝试使用 REPAIR_REBUILD 修复数据库
DBCC CHECKDB ('<DatabaseName>', REPAIR_REBUILD);

其中,<DatabaseName> 填写我们需要检查的数据库名称。

修复选项安全指数REPAIR_REBUILD > REPAIR_FAST > REPAIR_ALLOW_DATA_LOSS

REPAIR_REBUILD 这种修复方式不会导致数据丢失,是一个较安全的选项,但它只能修复一些特定类型的问题,如一些索引或链接错误。对于某些更严重的完整性问题,可能需要使用 REPAIR_ALLOW_DATA_LOSSREPAIR_FAST 选项来解决,但这些选项可能导致数据丢失。

再次强调下,在执行 DBCC CHECKDB 命令时,无论选择哪个修复选项,都建议在生产环境中谨慎操作,并确保在运行命令之前有最近的有效备份

最后给出后面两种有损修得复选项参数的常见用法,这里以 REPAIR_ALLOW_DATA_LOSS 举例,如下所示:

--(1)将数据库置于紧急模式,只允许管理员有限地访问数据库以诊断关键问题。
ALTER DATABASE <DatabaseName> SET EMERGENCY;

--(2)将数据库设置为一次只允许一个用户连接,通常是将要执行修复操作的数据库管理员。
ALTER DATABASE <DatabaseName> SET SINGLE_USER;

--(3)对数据库进行一致性检查,并尝试修复发现的问题。
DBCC CheckDB (<DatabaseName>, REPAIR_ALLOW_DATA_LOSS); 

--(4)将数据库重新设置为多用户模式,允许正常连接数据库。
ALTER DATABASE <DatabaseName> SET MULTI_USER;

其中,<DatabaseName> 填写我们需要检查的数据库名称。

五、更多常见的 DBCC 命令

  • 数据库完整性检查DBCC CHECKDB 命令用于检查数据库的物理和逻辑完整性,查找并报告数据库中的错误和问题。
  • 释放内存DBCC DROPCLEANBUFFERS 命令可用于释放数据库缓存中的所有缓冲区,以便进行性能测试或清理缓存。
  • 更新统计信息DBCC UPDATEUSAGE 命令用于更新系统表中的空间使用信息,以便优化查询性能。
  • 重建索引DBCC INDEXDEFRAGDBCC DBREINDEX 命令可用于重建和整理索引,提高查询性能。
  • 清理日志DBCC SHRINKFILE 命令可用于收缩数据库事务日志文件的大小。
  • 查看数据库信息DBCC SHOWCONTIG 命令用于显示表或索引的碎片程度。
  • 查看数据库版本和状态DBCC DBINFO 命令用于显示数据库的版本和状态信息。

参考文章:

  • 《DBCC CHECKDB (Transact-SQL)》

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/131957779

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/802852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据仓库】Apache Hive初体验

为什么使用Hive&#xff1f; 使用Hadoop MapReduce直接处理数据所面临的问题&#xff1a; 人员学习成本太高需要掌握ava语言MapReduce实现&#xff0c;复杂查询逻辑开发难度太大&#xff01; 1&#xff0c;使用Hive处理数据的好处操作接口采用类SQL语法&#xff0c;提供快速开发…

MUR2080CT- ASEMI二极管的特性和应用

编辑-Z 本文将详细介绍MUR2080CT二极管的特性和应用。首先&#xff0c;将介绍MUR2080CT二极管的基本结构和工作原理。然后&#xff0c;将探讨MUR2080CT二极管的特性&#xff0c;包括正向电压降、反向漏电流和反向恢复时间等。接下来&#xff0c;将介绍MUR2080CT二极管在电源、…

linux环境安装mysql数据库

一&#xff1a;查看是否自带mariadb数据库 命令&#xff1a;rpm -qa | grep mariadb 如果自带数据库则卸载掉重新安装 命令&#xff1a;yum remove mariadb-connector-c-3.1.11-2.el8_3.x86_64 二&#xff1a;将压缩文件上传到/user/local/mysql文件夹 或者直接下载 命令&a…

18款iPad绘画软件推荐!iPad必备生产力工具

每当提起iPad&#xff0c;少不了会听到坊间流传已久的那句话&#xff0c;「买前生产力&#xff0c;买后爱奇艺」&#xff0c;确实有不少奔着生产力入手iPad的人&#xff0c;最终让iPad沦为煲剧神器或泡面盖&#xff0c;但我们没必要因噎废食&#xff0c;因为总有人能克服iPad上…

互联网医院系统源码实现:打造现代化医疗服务平台

摘要 本文将介绍一个基于Python的简化版互联网医院系统的源码实现&#xff0c;主要包含用户注册与登录、医生信息管理、在线预约挂号、在线问诊与咨询、电子病历管理、在线支付与结算等功能。该源码实现仅为示例&#xff0c;实际开发中需要考虑更多的业务逻辑和安全性。 1. …

摄像头m2dock(MAIX-II DOCK)

官方文档地址 https://wiki.sipeed.com/soft/maixpy3/zh/index.html 一、软件准备 1 烧录镜像软件 2 镜像 当前最近版本镜像文件 3 SDFormatter 4 Maixpy IDE 二、SD卡准备 1 格式化SD卡&#xff08;用SDFormatter&#xff09; 2 烧录 3 弹出&#xff0c;插入开发板中 出现…

会议OA项目之待开历史所有会议(使用一个dao方法完成三种会议状态的查询)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于OA项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.主要功能点介绍 二.效果演示 三.前端…

多线程(JavaEE初阶系列5)

目录 前言&#xff1a; 1.什么是定时器 2.标准库中的定时器及使用 3.实现定时器 结束语&#xff1a; 前言&#xff1a; 在上一节中小编给大家介绍了多线程中的两个设计模式&#xff0c;单例模式和阻塞式队列模式&#xff0c;在单例模式中又有两种实现方式一种是懒汉模式&a…

小白如何在简单的分布式锁里反复踩坑

背景 为什么要做分布式锁&#xff1f; Java开发就逃不过多线程问题&#xff0c;而对于单个实例&#xff0c;我们可以使用synchronized锁作为基本的线程锁&#xff0c;解决多线程问题&#xff0c;但对于实际项目中集群部署&#xff0c;分布式系统&#xff08;不同的客户端&…

HTML再出发

HTML再出发 注意事项VScode相关排版标签语义化块级元素和行内元素文本标签img标签图片格式超链接 注意事项 VScode相关 vscode必须打开一个文件夹才能使用liveServer&#xff0c;只打开一个文件无法使用liveServer功能。网页编写不标准&#xff0c;缺少head&#xff0c;body等…

java springBoot 整合日志

1.在Spring Boot项目的resources目录下创建一个新的logback.xml文件。 2.logback.xml中&#xff0c;配置 代码 <?xml version"1.0" encoding"UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL…

SpringBoot复习:(4)打成的jar包是如何启动的?

jar包通过MANIFEST的Main-Class指定了主类JarLauncher, JarLauncher的main方法代码如下&#xff1a; 其中调用的launch的代码如下&#xff1a; 首先&#xff0c;创建了一个自定义的ClassLoader,代码如下&#xff1a; 其中调用的重载的createClassLoader代码如下&#xff1…

BloomFilter

概念和由来 布隆过滤器&#xff08;英语&#xff1a;Bloom Filter&#xff09;是 1970 年由布隆提出的。它实际上是一个很长的二进制数组(00000000)一系列随机hash算法映射函数&#xff0c;主要用于判断一个元素是否在集合中。 布隆过滤器适用于对存储空间要求较高&#xff0c…

[深度学习实战]基于PyTorch的深度学习实战(下)[Mnist手写数字图像识别]

目录 一、前言二、Mnist手写数字图像识别2.1 加载数据2.1.1 下载地址2.1.2 用 numpy 读取 mnist.npz 2.2 定义卷积模型2.3 开始训练2.4 完整代码2.5 验证结果2.6 修改参数 三、后记 PyTorch——开源的Python机器学习库 一、前言 首先感谢所有点开本文的朋友们&#xff01;基于P…

js正则表达式方法学习

js正则表达式学习 1.能干嘛2.创建正则表达式3.关于正则表达式的方法3.1 正则的方法3.1.1 test3.1.2 compile3.1.3 exec捕获组对象具名捕获组对象非捕获组对象 3.2 String类型的对象的正则相关的方法3.2.1 search()3.2.2 replace()3.2.3 split()3.2.4 match()3.2.5 matchAll() 1…

目标检测识别——大恒(DaHeng)相机操作与控制编程

文章目录 引言正文相关开发库的介绍编程准备配置引用头文件GalaxyIncludes.h配置lib文件 具体编程过程初始化和反初始化枚举设备开关设备 属性控制属性控制器种类 图像采集控制和图像处理采单帧回调采集 总结 引言 在做老师的横向项目时&#xff0c;需要用大恒相机&#xff0c…

MQTT 5.0 Reason Code 介绍与使用速查表

Reason Code Reason Code 在 MQTT 中的主要作用是为客户端和服务端提供更详细的反馈。比如我们可以在 CONNACK 报文中将用户名或密码错误对应的 Reason Code 反馈给客户端&#xff0c;这样客户端就能够知道自己无法连接的原因。 MQTT 3.1.1 中的 Reason Code 虽然 MQTT 3.1.…

超实用的品牌软文推广方案分享,纯干货

品牌软文推广对于企业来说是一项关键且重要的战略&#xff0c;如何通过软文推广提高品牌的知名度、美誉度和影响力&#xff0c;成为了许多企业关注的问题。本文伯乐网络传媒将从多个角度深度探讨品牌软文推广方案&#xff0c;为企业提供一些有价值的参考。 一、确定品牌软文推广…

idea 关闭页面右侧预览框/预览条

idea 关闭页面右侧预览框 如图&#xff0c;预览框存在想去除 找了好多方法&#xff0c;什么去掉“setting->appearance里的show editor preview tooltips”的对钩&#xff1b;又或者在该预览区的滚动条上右键&#xff0c;“取消勾选show code lens on scrollbar hover”。都…

等价背包--装箱问题

1024. 装箱问题 - AcWing题库 直接将消耗的体积变成价值即可&#xff0c;最后利用总的体积减去价值即是剩余的空间 #include<bits/stdc.h> using namespace std; int a[1000010]; int f[1000010]; int main() {int n,v;cin>>v;cin>>n;for(int i1;i<n;i){c…