SQL SERVER数据库修复之REPAIR_ALLOW_DATA_LOSS级别简介和实例

news2024/11/19 15:24:01

目录

(一)前言

(二)关于DBCC CHECKxxx系列命令

1. DBCC CHECKALLOC

2. DBCC CHECKCATALOG

3. DBCC CHECKDB

(1)基本概念

(2)基本语法

(3)参数说明

(三)实际操作案例

1. 将数据库状态改为紧急模式

2. 将数据库改为单用户访问

3. 运行repair_allow_data_loss修复

4. 修复完成后运行DBCC CHECKDB确定没有问题

5. 将数据库更改为多用户访问


(一)前言

如果我们没有数据库备份,无法使用页面还原,那么我们就需要用repair_allow_data_loss来修复(会有数据损失,而且不一定所有的都是可以恢复的)一般来说,最小的修复级别是repair_allow_data_loss。

(二)关于DBCC CHECKxxx系列命令

在T-SQL中,DBCC是“数据库控制台命令”的首字母缩写,是执行多种任务的命令。这些任务主要是验证和维护数据库类型的任务。

一些DBCC命令(如下图所示)用于内部只读数据库快照。这意味着数据库引擎创建一个数据库快照,并使其处于事务一致状态。然后,DBCC命令针对该快照执行检查。执行完成后,快照将被删除。

1. DBCC CHECKALLOC

 DBCC CHECKALLOC命令检查指定数据库的磁盘空间分配结构的一致性。

2. DBCC CHECKCATALOG

检查指定数据库内的目录一致性。 数据库必须联机。

3. DBCC CHECKDB

(1)基本概念

通过执行下列操作检查指定数据库中所有对象的逻辑和物理完整性:

  • 对数据库运行 DBCC CHECKALLOCDBCC CHECKALLOC。
  • 对数据库中的每个表和视图运行DBCC CHECKTABLE DBCC CHECKTABLE。
  • 对数据库运行DBCC CHECKCATALOG DBCC CHECKCATALOG。
  • 验证数据库中每个索引视图的内容。
  • 使用 FILESTREAM 在文件系统中存储 varbinary(max) 数据时,验证表元数据和文件系统目录和文件之间的链接级一致性。
  • 验证数据库中的 Service Broker 数据。

这意味着不必从 DBCC CHECKDB 单独运行 DBCC CHECKALLOC、DBCC CHECKTABLE 或 DBCC CHECKCATALOG 命令。 有关这些命令执行的检查的详细信息,请参阅官网上这些命令的说明。

(2)基本语法

DBCC CHECKDB     
    [ ( database_name | database_id | 0    
        [ , NOINDEX     
        | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]    
    ) ]    
    [ WITH     
        {    
            [ ALL_ERRORMSGS ]    
            [ , EXTENDED_LOGICAL_CHECKS ]     
            [ , NO_INFOMSGS ]    
            [ , TABLOCK ]    
            [ , ESTIMATEONLY ]    
            [ , { PHYSICAL_ONLY | DATA_PURITY } ]    
            [ , MAXDOP  = number_of_processors ]    
        }    
    ]    
]

(3)参数说明

database_name | database_id | 0
要为其运行完整性检查的数据库的名称或 ID。 如果未指定,或者指定为 0,则使用当前数据库。 数据库名称必须符合标识符标识符规则。

NOINDEX
指定不对用户表的非聚集索引执行会占用很大系统开销的检查。 此选项将减少总执行时间。 NOINDEX 不影响系统表,因为总是对系统表索引执行完整性检查。

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
指定 DBCC CHECKDB 修复发现的错误。 仅将 REPAIR 选项作为最后手段使用。 指定的数据库必须处于单用户模式,才能使用以下修复选项之一。

REPAIR_ALLOW_DATA_LOSS
尝试修复报告的所有错误。 这些修复可能会导致一些数据丢失。

REPAIR_FAST
保留该语法只是为了向后兼容。 未执行修复操作。

REPAIR_REBUILD
执行不会丢失数据的修复。 此选项可能包括快速修复(如修复非聚集索引中缺少的行)以及更耗时的修复(如重新生成索引)。
此参数不修复涉及 FILESTREAM 数据的错误。

ALL_ERRORMSGS
显示针对每个对象报告的所有错误。 默认情况下显示所有错误消息。 指定或省略此选项都不起作用。 按对象 ID 对错误消息排序,从 tempdb 数据库生成的那些消息除外。    

EXTENDED_LOGICAL_CHECKS
如果兼容性级别为 100 (SQL Server 2008) 或更高,则对索引视图、XML 索引和空间索引(如果存在)执行逻辑一致性检查。
有关详细信息,请参阅本文后面备注部分中的“对索引执行逻辑一致性检查”。

NO_INFOMSGS
取消显示所有信息性消息。

TABLOCK
使 DBCC CHECKDB 获取锁,而不使用内部数据库快照。 这包括一个短期数据库排他 (X) 锁。 TABLOCK 可使 DBCC CHECKDB 在负荷较重的数据库上运行得更快,但 DBCC CHECKDB 运行时会减少数据库上可获得的并发性。

ESTIMATEONLY
显示运行包含所有其他指定选项的 DBCC CHECKDB 时所需的 tempdb 空间估计量。 不执行实际数据库检查。

PHYSICAL_ONLY
将检查限制为页和记录标头的物理结构完整性以及数据库的分配一致性。 设计该检查是为了以较小的开销检查数据库的物理一致性,但它还可以检测会危及用户数据安全的残缺页、校验和错误以及常见的硬件故障。
DBCC CHECKDB 完成运行所需的时间可能比早期版本要长得多。 出现此现象的原因是:

  • 逻辑检查更加全面。
  • 要检查的某些基础结构更为复杂。
  • 引入了许多新的检查以包含新增功能。
    因此,使用 PHYSICAL_ONLY 选项可能会大幅减少对较大数据库运行 DBCC CHECKDB 所需的时间,所以对需要频繁检查的生产系统,建议使用此选项。 我们仍然建议完整地定期执行 DBCC CHECKDB。 这些运行的执行频率取决于各业务和生产环境特定的因素。
    此参数始终表示 NO_INFOMSGS,不能与任何一个修复选项一同使用。

DATA_PURITY
使 DBCC CHECKDB 检查数据库中是否存在无效或越界的列值。 例如,DBCC CHECKDB 检测日期和时间值大于或小于 datetime 数据类型的可接受范围的列,或者小数位数或精度值无效的 decimal 或近似 numeric 数据类型列 。
默认情况下将启用列值完整性检查,并且不需要使用 DATA_PURITY 选项。 对于从 SQL Server 的早期版本升级的数据库,默认情况下不启用列值检查,直到 DBCC CHECKDB WITH DATA_PURITY 已在数据库中正确运行为止。 然后,DBCC CHECKDB 将默认检查列值完整性。 有关从 SQL Server 的早期版本升级数据库会对 CHECKDB 有何影响的详细信息,请参阅本主题的“备注”部分。

MAXDOP
适用对象:SQL Server(SQL Server 2014 (12.x) SP2 和更高版本)。

(三)实际操作案例

下面我们就使用DBCC CHECKDH repair_allow_data_loss来修复损坏的数据库。假定我们要修复的数据库名为Corrupt2022Fatal

1. 将数据库状态改为紧急模式

---将数据库状态改为紧急模式

ALTER DATABASE Corrupt2022Fatal SET EMERGENCY

GO

2. 将数据库改为单用户访问

--将数据库改为单用户访问

ALTER DATABASE Corrupt2022Fatal SET SINGLE_USER

GO

 

3. 运行repair_allow_data_loss修复

--运行repair_allow_data_loss修复

DBCC CHECKDB(Corrupt2022Fatal,repair_allow_data_loss)

Go

4. 修复完成后运行DBCC CHECKDB确定没有问题

---修复完成后运行DBCC CHECKDB确定没有问题

DBCC CHECKDB with NO_INFOMSGS;

Go

 

5. 将数据库更改为多用户访问

--将数据库更改为多用户访问

ALTER DATABASE Corrupt2022Fatal SET MULTI_USER;

go

 

如果建议的修复级别为REPAIR_REBUILD,您可以放心执行,不会有数据损失  这包括快速修复(如修复非聚集索引中缺少的行)以及更耗时的修复(如重新生成索引)。 

注意事项:

仅将 REPAIR 选项作为最后手段使用。 若要修复错误,建议您通过备份进行还原。 修复操作不会考虑表本身或表之间可能存在的任何约束。如果指定的表与一个或多个约束有关,建议您在修复操作后运行 DBCC CHECKCONSTRAINTS。如果必须使用 REPAIR,则运行不带有修复选项的 DBCC CHECKDB 来查找要使用的修复级别。如果使用 REPAIR_ALLOW_DATA_LOSS 级别,则建议您在运行带有此选项的 DBCC CHECKDB 之前备份数据库。

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

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

相关文章

分析常见限流算法及手写三种(计数器、漏斗、令牌桶)代码实现

常见的限流算法分析 限流在我们日常生活中经常见到,如火车站门口的栏杆、一些景点的门票只出售一定的数量 等等。在我们的开发中也用到了这种思想。 为什么要限流 在保证可用的情况下尽可能多增加进入的人数,其余的人在排队等待,或者返回友好提示,保证里面的进行…

机器如何快速学习数据采集

很多人都在思考如何利用机器学习(ML)算法来提高产品或服务的质量。 如果你正在考虑采用ML,以正确的格式收集正确的数据,将会降低你的数据清理工作以及数据浪费。 要收集所有数据 收集所有数据是非常重要的。除非你真正训练一个…

Excel基于分隔符拆分列

1、示例数据 id name describe 1 张三 学生 2 李四 老师 3 王五 学生 2、将数据复制到Excel中 数据目前都在A列中 3、将数据一次拆分到多个列 Excel基于分隔符拆分列,将数据一次拆分到多个列。 选中数据,数据-分列-分列 设置分隔符 点击完成后&…

【Python自然语言处理】使用逻辑回归(logistic)对电影评论情感分析实战(超详细 附源码)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、舆情分析 舆情分析很多情况下涉及到用户的情感分析,或者亦称为观点挖掘,是指用自然语言处理技术、文本挖掘以及计算机语言学等方法来正确识别和提取文本素材中的主观信息,通过对带有…

使用Visual Studio Code 进行Python编程(一)

1、下载Visual Studio Code 到微软的Visual Studio Code官方主页下载Visual Studio Code: Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器Visual Studio 开发工具和服务让任何开发人员在任何平台和语言的应用开发都更加轻松。 随时随地免费使用代码编辑器或 I…

Spire.Office for .NET 7.12.0 2022年最后版本?

谷歌能找到破解版是破坏强签名,不能用web,请把大家不要用Spire.Office for .NET is a combination of Enterprise-Level Office .NET API offered by E-iceblue. It includes Spire.Doc, Spire.XLS, Spire.Spreadsheet, Spire.Presentation, Spire.PDF, …

数据库开发项目 flask + html 01

目的 开放平台(网站) 前端开发 HTML CSS JavaScript Web框架: 接受请求并处理 MySQL数据库: 存储数据 快速上手: 基于 Flask Web框架 快速搭建网站。 进阶: 基于 Django框架 1. 快速开发网站 安装框架 …

(附源码)SSM介绍信智能实现系统 毕业设计 260930

SSM介绍信智能实现系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中&…

java+mysql基于SSM的大学生兼职信息系统-计算机毕业设计

开发环境 运行环境: 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:SSM(springspringMVCmybatis)vue 项目介绍 论文主要是对大学生兼职信息系统进行了介绍,包括研究的现状,还有涉及的开发背景,然…

分享几款免费实用的国产内网穿透工具

对于没有公网IP的用户来说,如何实现远程管理或让局域网的服务可以被公网访问到是一个问题。当然,也有很多类似的需求,比如: 微信公众号小程序开发调试公网访问本地web项目异地远程处理公司服务问题异地访问公司内网财务/管理系统…

Qt 中模型视图编程的基本概念

背景 一个应用程序本质可以抽象为三部分:界面、逻辑处理、数据。程序中存储有大量的数据,经过逻辑处理后、通过界面展示给用户,同时用户可以通过界面对数据进行编辑,如下图所示: Qt 中的模型视图架构就是用来实现大量…

Spring_第3章_AOP+事务

Spring_第3章_AOP事务 文章目录Spring_第3章_AOP事务一、AOP1 AOP简介问题导入1.1 AOP简介和作用【理解】1.2 AOP中的核心概念【理解】2 AOP入门案例【重点】问题导入2.1 AOP入门案例思路分析2.2 AOP入门案例实现【第一步】导入aop相关坐标【第二步】定义dao接口与实现类【第三…

8 常规聚类

常规聚类 聚类分析是解决数据全方位自动分组的有效方式。若将数据全体视为一个大类,这个大类很可能是由若干个包含了一定数量观测的自然小类”组成的。聚类分析的目的就是找到这些隐藏于数据中的客观存在的“自然小类”,并通过刻画“自然小类”体现数据…

舆情监控软件

随着中国互联网的快速发展,舆情监测成为工作中的一部分,如果没有舆情监控软件的及时介入,负面舆情将会迅速扩大并蔓延到各个方面,对社会以及公众造成严重的影响,舆情监控软件对企业政府有着深远影响,接下来…

Python学习小组课程P5-Python办公(2)Excel读取与Word生成

一、前言 注意:此为内部小组学习资料,非售卖品,仅供学习参考。 本系列课程: Python学习小组课程-课程大纲与Python开发环境安装 Python学习小组课程P1-Python基础(1)语法与数组 Python学习小组课程P2-Pyth…

【配电网重构】基于yalmip求解含sop+二阶锥配电网重构附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

ouster-32激光雷达使用---雷达输出数据分析

ouster-32激光雷达使用---雷达输出数据分析雷达输出数据分析所有数据imu数据雷达数据坐标系Rviz显示雷达输出数据分析 所有数据 查看当前topic消息种类 rostopic list终端输出 /clicked_point /initialpose /move_base_simple/goal /os_node/imu_packets /os_node/lidar_pa…

ADSP-21489的开发详解:VDSP+自己编程写代码开发(2-软件和硬件的开发环境搭建)

Visual DSP软件的安装 运行 setup 软件安装包,全部下一步即可完成软件安装,非常简单。我们的资料里提供了 VDSP5.1.2 软件,当然您也可以通过 ADI 公司官网下载。 VDSP5.1.2 软件官网下载地址: Visual DSP5.1.2的ADI官网下载链接…

2022深入学习C++教程

2022深入学习C教程 课堂和实践课程 – C 11 的功能、异常处理和 STL – 适用于学术界和工业界 课程英文名:Learn C Programming -Beginner to Advance- Deep Dive in C 此视频教程共30.0小时,中英双语字幕,画质清晰无水印,源码…

Composer交互文档如何在PPT当中使用

在往期的公开课中我们讲解了SOLIDWORKS Composer这样一款三维制作软件,Composer可以很好的利用SOLIDWORKS所设计的数据自动生成产品手册、装配目录、维修说明,以及销售和培训视频等,还可以为用户提供非常满意的交互式体验。 并且Composer和S…