sql server数据库还原失败提示数据错误循环冗余检查

我朋友的 SQL Server 恢复上周失败。
提示“数据错误(循环冗余校验)”。
很烦人。

他尝试了几种方法。

第一个是找到专业的工具来恢复文件。
他说系统文件已损坏。
工具可以复制数据。
但是,损坏的数据可能无法恢复。
这点应该注意。

第二个是执行DBCC CHECKDB命令。
他说这可以检查数据库哪里损坏了。
如果您发现有问题可以修复。
您可以尝试DBCCREPAIR_ALLOW_DATA_LOSS。
但这会丢失数据。
当心。

第三种是从其他备份恢复。
他说如果当前的备份也坏了。
您必须使用其他备份。
所以你必须定期备份你的数据。
将其放在安全的地方。

最后,他找到了一位数据库专家来帮忙。
我说专业的支持才是最可靠的。

算了。
由你决定。

如何解决数据冗余

那天我拆开了公司的服务器硬盘,发现有客户的订单金额是实际订单金额的三倍。
全部重复提交。
系统日志显示所有请求都是在下午三点到四点之间发出的。
当时是大促销,用户手都抖了,点了两次提交。
这让人想起正常化的重要性。

在第一个正常过程中,客户信息被分成单独的表,订单表仅存储客户 ID 和订单 ID。
第二种正常模式是地址字段不在订单表中,因为字段只需要依赖主键。
当时,我们对customer表做了唯一约束,并在orders表中使用了自增ID作为主键。
这样,每次提交时系统都会自动匹配客户ID,直接拒绝重复订单。

但是,仅靠标准化是不够的。
索引优化更重要。
我们在订单表的提交时间字段中添加了B树索引,发现该时段内有重复请求在两秒内完成。
将接口超时时间调整为五秒后;问题立刻就解决了。
就是这个比如衣柜分类标签。
未贴标签的标签散落一地。
通过索引,您可以快速找到您想穿的衣服。

无法停止清洁工作。
每个月的第一周,过去3 0天的订单会被清除并存储在冷数据区。
在当时的清理过程中,三年前旧系统遗留的问题我发现三个档案仍然存在不干净的重复数据。
我当时使用的是老版本的MySQL,自动清理功能并不完善。
我只能使用 DELETE 语句和 NOT IN 子句自己清除它。

触发器是个好东西。
客户表新增触发器,手机号码更新时自动同步订单表。
我记得触发器中有一个错误,导致所有客户的订单号都为空。
最后,我花了一晚上的时间对用户 ID 进行分组,使用 UPDATE 语句修复它。
教训是,虽然触发是自动的,但必须一次又一次地测试逻辑。

业务逻辑分析比较隐蔽。
一次发现订单数量异常,发现促销规则写错原价和折扣同时计算。
当你整理衣服时,就像找到两件尺寸相同但款式相同的衣服一样。
您需要查看您的购买历史记录,以了解哪一部分是额外的。

工具帮助确实可以缓解问题。
使用SSMS的重复数据搜索功能,您可以在几分钟内找到数百个重复订单。
不过,对于自动清洁我还是比较小心的。
我先做了备份并执行。
该工具删除某个客户的所有历史订单并最终恢复备份。
教训是自动化不能完全取代人工审查。

Excel处理技巧是最实用的。
我发现上一份财务报告用Ctrl+P导出的PDF中多了一个空白页。
返回到 Excel 时,按 Ctrl+Shift+向下键可查找选定的重复行。
单击删除按钮可删除所有内容,数据将恢复到原始状态。
然而,这种方法治标不治本。
根本原因是导出模板没有定义数据区域。

现在数据量大了,这些方法大家都在用。
但偶尔会出现一些奇怪的问题这种事经常发生。
例如订单金额显示为0。
界面 检查数据库和应用层没有问题。
最后发现有的开发者的测试数据不清楚。
等等,这是一个典型的业务逻辑与技术方法相结合的问题吗?

什么是数据库冗余,如何避免数据库冗余

数据冗余没有好坏之分,取决于你如何使用它。
设计数据库时,一般需要实现三种以上的通用形式,否则数据重复会太严重。
我上周刚刚做了一个项目,可扩展性、可读性、响应时间和语句复杂性都必须考虑。
如果需要维护,必须留下一些规定。
说白了,这是有经验的开发人员和DBA面临的问题。
你自己看看吧。

什么是数据库中的数据冗余?如何消除数据冗余?

嗯,我确实在数据冗余方面遇到了麻烦。
那一年,我在一家开发ERP系统的小公司工作。
我刚刚接手一个项目,数据表一团糟。
如您所知,客户信息存储在订单、发货单和付款单中。
你觉得麻烦吗?后来系统开始运行时,数据无法及时更新。
一位客户的地址变了,我必须运行多个表才能进行更改,这很累。

还浪费存储空间。
当时的服务器并不便宜,而且存储的大量重复数据增加了成本。
更令人沮丧的是,当数据不一致时,可能很难验证信息。
客户A的地址在订单上是北京,在付款单上是上海。
谁会用这个?
后来老板关心了,来找我请教。
我说这个需要标准化,减少冗余。
他当时很紧张,表示会尽快去做。
我们开始整理公共数据并创建客户主表。
所有其他表都将与该主表相关。
这很好。
更新时,只需更改主表一次,所有相关表都会相应更改,省力得多。
它还节省了大量空间并降低了成本。

看,您必须非常小心数据冗余。
为了系统速度或备份目的,您可能需要一些冗余,但不要太多。
不然的话,体力就会太高。
这是我的经验,请参考。