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

这篇具有很好参考价值的文章主要介绍了SQL SERVER数据库修复之REPAIR_ALLOW_DATA_LOSS级别简介和实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

(一)前言

(二)关于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命令针对该快照执行检查。执行完成后,快照将被删除。

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

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 命令。 有关这些命令执行的检查的详细信息,请参阅官网上这些命令的说明。

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

(2)基本语法

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

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
尝试修复报告的所有错误。 这些修复可能会导致一些数据丢失。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(三)实际操作案例

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

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

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

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

ALTER DATABASE Corrupt2022Fatal SET EMERGENCY

GO

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

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

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

ALTER DATABASE Corrupt2022Fatal SET SINGLE_USER

GO

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

3. 运行repair_allow_data_loss修复

--运行repair_allow_data_loss修复

DBCC CHECKDB(Corrupt2022Fatal,repair_allow_data_loss)

Go

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

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

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

DBCC CHECKDB with NO_INFOMSGS;

Go

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

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

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

ALTER DATABASE Corrupt2022Fatal SET MULTI_USER;

go

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

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

注意事项:

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

到了这里,关于SQL SERVER数据库修复之REPAIR_ALLOW_DATA_LOSS级别简介和实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL Server 数据库安装教程SQL Server 2017

    官网: SQL Server 下载 | Microsoft  软件版本看你自己需求啦,反正我是下了SQL Server 2017 评估版(试用180天,秘钥自己百度)  下载后,软件有点小,不是实际的安装包,只是安装导向包,在安装过程才下载实际的安装包:      要保持有网络,直接双击安装,选基本即可:  选好

    2024年02月05日
    浏览(93)
  • sql server数据库跟踪——SQL Server Profiler解析

    工具 : SQL Server Profiler这个工具是SQL Server数据库自带的语句执行跟踪工具,常使用于分析软件修改数据库时所执行的语句,适合用来研究软件运行数据库的原理。 打开方式: 本机安装了SQL server的话,都是自带的。直接去直接在【开始】-【程序】-搜索Profiler可找到【SQL Ser

    2024年04月16日
    浏览(140)
  • SQL Server2008数据库升级至SQL Server2012

    今天接到了一个需求,服务器上的数据库需要从SQL Server2008升级到2012。根据之前的经验,感觉是一个非常有意思的过程(事实上也是。这个过程也给了我一些触动与启发,因此,便记录了自己的踩坑过程以及解决方案,还有安装过程的体会。 启动SQL Server2012的安装引导程序,

    2024年02月05日
    浏览(89)
  • SQL Server数据库使用

    SQL Server 2008 R2的安装和使用 安装前的准备 安装过程 1)安装所选功能 2)安装的类型:默认或命名实例 3)服务账户 4)身份验证模式 5)排序规则设置 6)开始安装 7)完成安装 验证数据库安装成功 【开始】|【程序】中可以看到Microsoft SQL Server 2008的程序组 启动和停止数据库

    2024年02月11日
    浏览(77)
  • SQL Server数据库管理

    数据库登录——使用两种方式均可登录数据库:windows和sqlserver身份验证方式两种。  数据库的使用和管理 步骤一:创建数据库 1)新建数据库,数据库名为book,初始大小都配置为3,自动增长与路径都为默认,点击确定   步骤二:查看主数据与日志文件(查看C:Program Files

    2024年02月13日
    浏览(70)
  • Sql server数据库安装

    以sql server2014数据库为例 sql server数据库安装需要注意两点: 1.不使用从镜像中拷贝出的压缩包安装会报错,提示缺少trin_aide.cab和vs_shell.cab文件 2.sql server2014数据库安装前需要安装.net Framework 3.5 各个版本sql server数据库情况: 1.sql server2008 R2数据库提示需要.net Framework 3.5。但不

    2024年02月09日
    浏览(60)
  • 《数据库系统概论》SQL Server 数据库导出、导入教程

    在SQL Server的使用过程中,大家难免遇到数据库表的导出、导入,从而实现用其它电脑打开数据库。 如果是使用学校实验室(机房)电脑做实验的同学,一定要掌握本技能!!! 1、右键点击数据库,“任务”,“生成脚本”,如下图 2、选择对象操作如图,“选择具体的数据

    2024年02月10日
    浏览(75)
  • 【数据库原理】MyShop 商城数据库设计(SQL server)

    声明:未经允许,请勿转载 MyShop商城是一个在线购物平台,致力于提供便捷的购物体验。为了满足用户需求,商城需要一个可靠、高效的数据库系统来管理商品、用户和订单信息。数据库系统应具备性能、可靠性和扩展性,并通过合理的设计和优化提高系统的响应速度和数据

    2024年02月11日
    浏览(61)
  • 【SQL Server】数据库开发指南(一)数据库设计

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2023年04月08日
    浏览(92)
  • 【数据库·关系数据库标准语言SQL·学习笔记】Microsoft SQL Server数据库的建立和删除

    开发环境:SQL Server Management Studio(SSMS) 利用数据库对象资源管理器创建数据库 (1)右击对象资源管理器中的数据库,选择新建数据库 (2)在新建数据库界面输入数据库名称 ,并选择确定 利用CREAT DATABASE命令在SSM工具的新建查询中创建数据库 1.语法格式 CREATE DATABASE dat

    2024年02月08日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包