• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

[MVS]SQL SERVER 中如何快速检查数据完整性

2024-10-16 发表
  • 0关注
  • 0收藏 105浏览
粉丝:2人 关注:5人

问题描述

SQL SERVER 中如何快速检查数据完整性

解决方法

 

1.  DBCC CHECKDB检查数据库完整性

1.1.   工具介绍

SQL Server 中,DBCC CHECKDB命令可检查数据库的逻辑和物理完整性,定期运行有助于提早发现并解决潜在的问题。

具体功能包括:

1)       一致性检查:验证数据库中各种对象的一致性,包括表、索引等。

2)       检测和修复:识别数据库中的错误或损坏,并在需要时尝试修复这些问题。

3)       物理检查:检查数据库页和页内结构的物理完整性。

4)       跨对象一致性:确保关系数据库中不同对象之间的一致性,例如,确保索引与数据是一致的。

 

参考:

***.***/zh-cn/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-2016

1.2.   常见使用示例

执行权限所需角色:Sysadmin, db_owner

### 检查当前数据库。

DBCC CHECKDB

### 检查指定数据库,不丢失数据,可修复索引。

DBCC CHECKDB ('YourDatabaseName', REPAIR_REBUILD);

### 检查当前数据库取消显示信息性消息。

DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS;

### 大型生产可提高速度

DBCC CHECKDB WITH PHYSICAL_ONLY; GO

### 建议在事务中进行数据修复操作,示例:

BEGIN TRANSACTION

DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS`

COMMIT TRANSACTION

如不想接受操作的结果,可撤销本次事务。

ROLLBACK TRANSACTION

 

1.3.   DBCC CHECKDB的基本语法

基本语法:

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 ]

        }

    ]

]

 

选项说明:

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

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

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

a)       `REPAIR_ALLOW_DATA_LOSS`:尝试修复所有错误,可能会导致数据丢失。

b)       `REPAIR_REBUILD`:修复没有数据丢失风险的错误,如重建坏掉索引。

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

4)       ALL_ERRORMSGS:显示针对每个对象报告的所有错误。 默认情况下显示所有错误消息。 指定或省略此选项都不起作用。

5)       EXTENDED_LOGICAL_CHECKS:如果兼容性级别为 100(在 SQL Server 2008 (10.0.x) 中引入),则此选项对索引视图、XML 索引和空间索引(如果存在)执行逻辑一致性检查。

6)       NO_INFOMSGS:取消显示所有信息性消息。

1.4.   使用建议

备份:在进行任何修复操作前,务必先备份数据库。

性能影响:`DBCC CHECKDB` 可能会对性能产生影响,建议在低负载时间执行。

安全测试:在生产系统上修复错误之前,可以先在测试环境中进行验证。

由于 DBCC 修复选项不可用于内存优化表,因此必须定期备份数据库并测试备份。 如果内存优化表中出现数据完整性问题,必须从上次已知的正确备份中还原。

 

1.5.   执行输出示例

输出示例:

SQL>dbcc checkdb ('sqltestdb1') WITH PHYSICAL_ONLY;

DBCC results for 'SQLTestDB1'.

CHECKDB found 0 allocation errors and 0 consistency errors in database 'SQLTestDB1'.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

 

完成时间: 2024-10-16T18:33:12.1165814+08:00

 

               

 

该案例对您是否有帮助:

您的评价:1

若您有关于案例的建议,请反馈:

0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作