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

日期: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.mzph.cn/news/12159.shtml

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

相关文章

JVM简述

JDK&JRE&JVMJVM运行时内存结构图方法区堆区栈区程序计数器本地方法栈 JVM 的主要组成部分及其作用 JDK&JRE&JVM JVM就是java虚拟机&#xff0c;一台虚拟的机器&#xff0c;用来运行java代码 但并不是只有这台机器就可以的&#xff0c;java程序在运行时需要依赖…

sql查询语句大全-详细讲解(格式、示例)

目录 范围查询 BETWEEN...AND in 为空 模糊查询 去重查询 AND OR 排序查询 聚合函数 1.count&#xff1a;计算个数 2.max&#xff1a;计算最大值 3.min&#xff1a;计算最小值 4.sum&#xff1a;计算和 5.avg&#xff1a;计算平均数 分组查询 group by 分组后…

观察者模式、中介者模式和发布订阅模式

观察者模式 定义 观察者模式定义了对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都将得到通知&#xff0c;并自动更新 观察者模式属于行为型模式&#xff0c;行为型模式关注的是对象之间的通讯&#xff0c;观察者模式…

Pytorch(一)

目录 一、基本操作 二、自动求导机制 三、线性回归DEMO 3.1模型的读取与保存 3.2利用GPU训练时 四、常见的Tensor形式 五、Hub模块 一、基本操作 操作代码如下: import torch import numpy as np#创建一个矩阵 x1 torch.empty(5,3)# 随机值 x2 torch.rand(5,3)# 初始化…

NoSQL之Redis配置使用

目录 一、关系数据库与非关系型数据库 1.1.关系型数据库的概述 1.2关系型数据库的优缺点 1.2.1优点 1.2.2缺点 1.3.非关系型数据库的概述 二.关系数据库与非关系型数据库的区别 2.1数据存储方式不同 2.2扩展方式不同 2.3对事务性的支持不同 2.4非关系型数据库产生背景 2…

浅析嵌入式GUI框架-LVGL

LVGL是什么&#xff1f; LVGL (Light and Versatile Graphics Library) 是最流行的免费开源嵌入式图形库&#xff0c;可为任何 MCU、MPU 和显示类型创建漂亮的 UI。 嵌入式GUI框架对比 Features/框架LVGLFlutter-elinuxArkUI(鸿蒙OS)AWTKQTMIniGUIemWinuC/GUI柿饼UI跨平台…

【Golang】Golang进阶系列教程--为什么 Go 语言 struct 要使用 tags

文章目录 前言struct tags 的使用使用反引号避免使用空格避免重复使用标准化的 tag 名称多个 tag 值 struct tags 的原理struct tags 的优势常用的 struct tags参考文章&#xff1a; 前言 在 Go 语言中&#xff0c;struct 是一种常见的数据类型&#xff0c;它可以用来表示复杂…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(8)-Fiddler如何设置捕获会话

1.简介 前边几篇宏哥介绍了Fiddler界面内容以及作用。今天宏哥就讲解和分享如何设置Fiddler后&#xff0c;我们就可以捕获会话&#xff0c;进行抓包了。 2.捕获会话的设备 常见的捕获会话的设备分为PC&#xff08;电脑&#xff09;端和手机&#xff08;Android和IOS苹果&…

Bert经典变体学习

ALBert ALBERT就是为了解决模型参数量大以及训练时间过长的问题。ALBERT最小的参数只有十几M, 效果要比BERT低1-2个点&#xff0c;最大的xxlarge也就200多M。可以看到在模型参数量上减少的还是非常明显的&#xff0c;但是在速度上似乎没有那么明显。最大的问题就是这种方式其实…

使用CRM分析数据有哪些功能?

CRM数据分析软件可以帮助企业增强竞争力&#xff0c;并更好地了解客户需求及市场变化&#xff0c;助力企业数据分析&#xff0c;并提供实时更新的数据和分析结果&#xff0c;CRM数据分析软件的主要特点是什么&#xff1f;包括以下6个特点。 CRM数据分析软件的主要功能通常包括…

SpringBoot 和 Vue 参数类型不对应,导致method parameter is not present

org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter id for method parameter type String is not present 客户端&#xff1a; requestUserInfoById()const requestUserInfoById async (id?: string) > {} 服务器端&am…

亚马逊云科技全新Amazon Bedrock,助力客户构建生成式AI应用

亚马逊云科技近日在纽约峰会上宣布全面扩展其全托管基础模型服务Amazon Bedrock&#xff0c;包括新增Cohere作为基础模型供应商&#xff0c;加入Anthropic和Stability AI的最新基础模型&#xff0c;并发布变革性的新功能Amazon Bedrock Agents功能。客户无需管理任何基础设施&a…

ChatGPT统计“一到点就下班”的人数

ChatGPT统计“一到点就下班”的人数 1、到点下班 Chatgpt统计各部门F-D级员工到点下班人数占比&#xff0c;是在批评公司内部存在到点下班现象。 根据图片&#xff0c;该占比的计算方法是&#xff1a;最后一次下班卡在17:30-17:40之间&#xff0c;且1-5月合计有40天以上的人…

OpenCV图像处理-视频分割静态背景-MOG/MOG2/GMG

视频分割背景 1.概念介绍2. 函数介绍MOG算法MOG2算法GMG算法 原视频获取链接 1.概念介绍 视频背景扣除原理&#xff1a;视频是一组连续的帧&#xff08;一幅幅图组成&#xff09;&#xff0c;帧与帧之间关系密切(GOP/group of picture)&#xff0c;在GOP中&#xff0c;背景几乎…

关于Java中的Lambda变量捕获

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE进阶 目录 一、Lambda表达式语法 二、Lambda中变量捕获 一、Lambda表达式语法 基本语法: (parameters) -> expression 或 (parameters) ->{ statements; } Lambda表达式由三部分组成&a…

使用Feign出现空指针异常

说明&#xff1a;本文记录一次偶然出现的空指针异常&#xff0c;在微服务架构中&#xff0c;一个服务在调用另一个服务时&#xff0c;出现了空指针异常。 业务描述&#xff1a;在做订单超时功能时&#xff0c;大家都知道&#xff0c;可以使用RabbitMQ延迟队列&#xff0c;下单…

数据结构—数组和广义表

4.2数组 数组&#xff1a;按一定格式排列起来的&#xff0c;具有相同类型的数据元素的集合。 **一维数组&#xff1a;**若线性表中的数据元素为非结果的简单元素&#xff0c;则称为一维数组。 **一维数组的逻辑结构&#xff1a;**线性结构&#xff0c;定长的线性表。 **声明…

TD1850多用表校准系统参考标准

参考标准 分类 标准名称 国家标准 GB/T 13978-2008 数字多用表 GB/T 15637-2012 数字多用表校准仪通用规范 计量法规 JJF 1075-2015 钳形电流表校准规范 JJF 1284-2011 交直流电表校验仪校准规范 JJF 1587-2016 数字多用表校准规范 JJG 124-2005 电流表、电压表、功率表及…

【多模态】18、ViLD | 通过对视觉和语言知识蒸馏来实现开集目标检测(ICLR2022)

文章目录 一、背景二、方法2.1 对新类别的定位 Localization2.2 使用 cropped regions 进行开放词汇检测2.3 ViLD 三、效果 论文&#xff1a;Open-vocabulary Object Detection via Vision and Language Knowledge Distillation 代码&#xff1a;https://github.com/tensorflo…

三子棋(超详解+完整码源)

三子棋 前言一&#xff0c;游戏规则二&#xff0c;所需文件三&#xff0c;创建菜单四&#xff0c;游戏核心内容实现1.棋盘初始化1.棋盘展示3.玩家下棋4.电脑下棋5.游戏胜负判断6.game&#xff08;&#xff09;函数内部具体实现 四&#xff0c;游戏运行实操 前言 C语言实现三子棋…