当前位置: 首页 > news >正文

【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

相关文章:

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

日期&#xff1a;2023年7月27日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…...

三、Web安全相关知识

请勿用于非法用途 文章目录 一、Web源码框架二、目录结构1、静态资源2、WEB-INF&#xff08;1&#xff09;classes&#xff08;2&#xff09;lib&#xff08;3&#xff09;web.xml 二、web脚本语言1、脚本种类&#xff08;1&#xff09;ASP&#xff08;2&#xff09;ASP.NET&am…...

Android系统服务之AMS

目录 概述 重点和难点问题 启动方式 main入口&#xff1a; run方法&#xff1a; BootstrapSevices 小结&#xff1a; 与其他线程的通信原理 参考文档&#xff1a; 概述 AMS是Android系统主要负责四大组件的启动&#xff0c;切换&#xff0c;调度以及应用程序进程管理和调度等工…...

Unity UGUI的EventTrigger (事件监听器)组件的介绍及使用

Unity UGUI的EventTrigger (事件监听器)组件的介绍及使用 1. 什么是EventTrigger组件&#xff1f; EventTrigger是Unity UGUI中的一个组件&#xff0c;用于监听和响应UI元素的各种事件&#xff0c;例如点击、拖拽、进入、离开等。通过EventTrigger组件&#xff0c;我们可以方…...

Matlab的SimuLink对FS32K144编程--内部数据存储Flash

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 前言 Flah擦写是由寿命的&#xff0c;应当减免无效的擦写&#xff0c;如数据值不变不进行擦写 1、新建工程完成后&#xff0c;拖出Flash的存储控制初始化…...

【MySQL】centos 7下MySQL的环境搭建

从本期博客开始我们正式进入到数据库的学习&#xff0c;在学习数据库时所用到的工具是Linux环境下的MySQL 目录 一、检查环境中是否装有MySQL 二、获取MySQL官方yum源 三、配置MySQL官方yum源 四、一键安装MySQL 五、启动mysql服务 六、登录MySQL 七、修改mysql配置文件…...

【SpringCloud Alibaba】(四)使用 Feign 实现服务调用的负载均衡

在上一文中&#xff0c;我们实现了服务的自动注册与发现功能。但是还存在一个很明显的问题&#xff1a;如果用户微服务和商品微服务在服务器上部署多份的话&#xff0c;之前的程序无法实现服务调用的负载均衡功能。 本文就带着大家一起实现服务调用的负载均衡功能 1. 负载均衡…...

ShardingSphere-Proxy水平分片详解与实战

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…...

PTA 1052 Linked List Sorting

个人学习记录&#xff0c;代码难免不尽人意。 A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked li…...

五,Eureka 第五章

5.3.2 修改pom添加依赖 <dependencies><!--公共部门--><dependency><groupId>cn.bdqn</groupId><artifactId>springcloud-api-commons</artifactId><version>${project.version}</version></dependency><!--e…...

yolov5目标框的融合(两个或多个框)

框的融合 1.多个框的融合 方法一: import os import numpy as np import glob import cv2 from PIL import Image,ImageFont,ImageDraw import randomCOLORS = np.random.uniform(0, 255, size=...

pythonAPI对接示API示例电商数据平台

下面是一个简单的示例&#xff0c;展示了如何对接一个API&#xff0c;并附带了一些Python代码作为参考。 寻找合适的API&#xff1a;首先&#xff0c;你需要找到符合你需求的API。你可以通过搜索引擎或者开发者平台来查找API文档。确保你在使用API时遵循相关的规则和限制。 注…...

如何做好IT类的技术面试

目录 一、IT行业的招聘渠道 二、如何做好技术面试官 三、谈谈IT行业如何做好招聘工作 四、面试IT公司的小技巧 五、面试有哪些常见的问题 六、关于面试的一些建议 面试可能是我们每个人都必须会遇到的事情&#xff0c;而技术面试更具有专业性&#xff0c;以下会从几个方面…...

比memcpy还要快的内存拷贝,了解一下

前言 朋友们有想过居然还有比memcpy更快的内存拷贝吗&#xff1f; 讲道理&#xff0c;在这之前我没想到过&#xff0c;我也一直觉得memcpy就是最快的内存拷贝方法了。 也不知道老板最近是咋了&#xff0c;天天开会都强调&#xff1a;“我们最近的目标就一个字&#xff0c;性能优…...

正则表达式常用字符及案例

引言 正则表达式是一种强大而灵活的工具&#xff0c;它在文本搜索和处理中起到了至关重要的作用。熟练掌握正则表达式的常用字符和使用方法&#xff0c;将能帮助开发者更加高效地进行模式匹配和字符串操作。本文将介绍一些常见的正则表达式字符&#xff0c;并给出一些实际案例…...

周训龙老兵参观广西森林安全紧急救援装备演练

7月21日上午&#xff0c;周训龙老兵参观广西紧急救援促进中心在南宁市青秀山举行森林安全紧急救援装备演练&#xff0c;多功能水罐消防车、无人救援机等先进设备轮番上阵&#xff0c;展示了广西应对突发事件的紧急救援速度和水平。广西壮族自治区应急厅不情愿参此次演练活动。 …...

[开发|java] java 将json转化java对象

使用Jackson库将JSON转换为Java对象&#xff1a; 安装依赖 <!-- Jackson Core --> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.12.5</version> </depen…...

平台化的测试工具推荐|一站式测试平台RunnerGo

互联网行业的发展到今天越来越多的公司更加注重工作效率和团队协作&#xff0c;越来越多的产品也趋于平台化&#xff0c;平台化也更有利于提高团队效率&#xff0c;代码管理、持续构建、持续部署这些工具的发展都是非常超前的&#xff0c;它们对于团队协作的支持和工作效率的提…...

PCB封装设计指导(十五)验证封装的正确性

PCB封装设计指导(十五)验证封装的正确性 封装建立好之后,我们需要验证封装是否能够正常的放入PCB文件中,最好最直接的办法就是直接放入PCB中来验证。 具体操作如下 任意新建一个空白的PCB文件点击File 选择NEW...

Godot 4 插件 - Utility AI 研究

今天看到一个视频教学 Godot4 | 实现简单AI | Utility AI 插件_哔哩哔哩_bilibili 就看了一下。吸引我的不是插件&#xff0c;是AI这两个字母。这AI与Godot怎么结合&#xff1f;感觉还是离线使用&#xff0c;值得一看。 视频时间不长&#xff0c;15分钟左右&#xff0c;看得…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...