如何检查数据库中数据的一致性

如何检查数据库中数据的一致性,第1张

数据库一致性检查(dbcc)提供了一些命令用于检查数据库的逻辑和物理一致性。Dbcc主要有两个功能:使用checkstorage 或 checktable 及 checkdb 在页一级和行一级检查页链及数据指针。使用checkstorage, checkalloc, 或 checkverify, tablealloc, 及indexalloc检查页分配。 在下列情况中需要使用 dbcc 命令: 作为数据库日常维护工作的一部分, 数据库内部结构的完整性决定于sa 或dbo 定期地运行dbcc 检查。 在系统报错以后, 确定数据库是否有损坏。 在备份数据库之前, 确保备份的完整性。 如果怀疑数据库有损坏时, 例如,使用某个表时报出表损坏的信息, 可以使用 dbcc 确定数据库中其他表是否也有损坏。 下面是dbcc的简单用法: dbcc checktable (table_name) 检查指定的表,检查索引和数据页是否正确链接, 索引是否正确排序, 所有指针是否一致, 每页的数据信息是否合理, 页偏移是否合理。 dbcccheckdb (database_name) 对指定数据库的所有表做和checktable 一样的检查。 dbcccheckalloc (database_name,fix|nofix) 检查指定数据库, 是否所有页面被正确分配,是否被分配的页面没被使用。当使用"fix"选项时,在检查数据库的同时会自动修复有问题的页面。(若数据库数据量很大,则该过程会持续很长时间。)dbcc tablealloc (table_name,fix|nofix) 检查指定的表, 是否所有页面被正确分配,是否被分配的页面没被使用。是 checkalloc 的缩小版本,对指定的表做完整性检查。当使用"fix"选项时,在检查数据表的同时会自动修复数据表中有问题的页面。 关于上述命令的其它选项及详细使用方法和checkstorage, checkverify, indexalloc的详细使用方法, 请参阅有关命令手册。

把原始MDF文件拷贝到数据库目录下,在查询分析器中运行以下代码:

USE MASTER

GO

SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE

GO

UPDATE SYSDATABASES SET STATUS=32768 WHERE NAME='njw'

Go

sp_dboption 'njw', 'single user', 'true'

Go

DBCC CHECKDB('njw')

Go

update sysdatabases set status=28 where name='njw'

Go

sp_configure 'allow updates', 0 reconfigure with override

Go

sp_dboption 'njw', 'single user', 'false'

Go

文件的checksum和blocksize

一致性就是数据满足所有数据库的条件,比如字段约束,外键约束,触发器等。 数据库事务需要满足一致性,就是值一个事务从一致性开始,必须一致性结束。

一致性与数据库事务的其他三个特性不同,一致性是目的,其他三个是实现一致性的手段。

有的地方也把一致性理解为业务的一致性,比如转账,就必须满足转账前后总金额一致,但是这些是依赖业务的具体实现,并不由数据库事务本身来保证


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6694940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存