SQL Server 表中缺少记录
Posted
技术标签:
【中文标题】SQL Server 表中缺少记录【英文标题】:Missing records in SQL server tables 【发布时间】:2012-02-07 00:14:27 【问题描述】:我有一个数据库,客户端似乎在一夜之间丢失了数据。他们输入记录并退出系统,然后声称第二天无法再次找到它们。
受影响表的主键索引中的 ID 号在应该自动递增和连续时似乎确实存在差距。客户端没有删除记录的功能,所以似乎有问题。
我已尝试使用DBCC CHECKDB
和DBCC REINDEX
,但记录没有重新出现,问题仍然存在。
从 VB.NET 2010 应用程序退出时,我使用以下内容为每个表写入记录:
Me.binds_Tablename1.EndEdit()
Me.binds_Tablename2.EndEdit()
TableAdapterManager.UpdateAll(Me.Dataset_1)
这个系统已经运行了 2 年,但现在正在发挥作用。数据库损坏可能是问题吗?
【问题讨论】:
很难说发生了什么!您是否使用过 sql server 审计和数据库审计规范来找出谁/哪个进程使用 delete 语句访问了表? 不太可能是数据库。奥卡姆剃刀法则表明,如果数据库和代码最近都没有改变,那么您需要查看数据/用户/月球的相位等作为起点。 【参考方案1】:现在似乎已排序 - 客户端正在运行一个镜像硬盘,其中一个硬盘开始出现 SMART 错误报告。自从更换了这个,问题就没有再出现过。
感谢您的帮助!
【讨论】:
【参考方案2】:由于这刚刚开始,他们是否有可能在某个地方进入 2012 年或者与 2012 年有关,也许这个值在查找表中不存在,事务被回滚
当一个事务回滚时,标识值没有被重用,这就是你看到差距的原因,你需要找出你有回滚的原因
【讨论】:
谢谢 - 这个问题实际上是从去年年底开始的。不过我会检查回滚。【参考方案3】:如果内存可用,TableAdapterManager.UpdateAll()
方法会将更新包装在事务中。自动增量字段在事务之外递增,所以我猜您的某些事务可能会回滚。
【讨论】:
以上是关于SQL Server 表中缺少记录的主要内容,如果未能解决你的问题,请参考以下文章
当 1700 个用户面向门户并且表有 25 个缺少记录时,sql server 没有响应
脚本任务从 Excel 批量复制到 Sql Server 2008。标题后缺少第一行