2012-01-10 132 views
9

我有一個數據庫就位,客戶端似乎在一夜之間丟失了數據。他們輸入記錄並退出系統,然後宣稱第二天不能再找到它們。SQL服務器表中缺少記錄

受影響的表的主鍵索引中的ID號似乎在自動遞增且連續的情況下存在差距。客戶端沒有刪除記錄的功能,所以似乎存在問題。

我試過使用DBCC CHECKDBDBCC REINDEX但記錄不會重新出現,問題仍然存在。

在退出的VB.NET 2010應用程序,我用下面寫的記錄爲每個表:

Me.binds_Tablename1.EndEdit() 
Me.binds_Tablename2.EndEdit() 
TableAdapterManager.UpdateAll(Me.Dataset_1) 

該系統已2年工作得很好,但現在打起來。數據庫腐敗可能是問題嗎?

+0

很難分辨發生了什麼!您是否使用過SQL Server審計和數據庫審計規範來查明誰使用刪除語句訪問了哪些表? – Mithrandir 2012-01-10 15:32:59

+0

不可能是數據庫。 Occam的Razor會指出,如果最近數據庫和代碼都沒有改變,那麼你需要將數據/用戶/月相等作爲起點。 – Simon 2012-01-10 15:42:04

回答

0

這現在看來是排序 - 客戶端運行一個鏡像硬盤,其中之一是開始使用SMART錯誤報告。由於這被替換,問題沒有重新發生。

感謝您的幫助!

2

如果內存服務,TableAdapterManager.UpdateAll()方法將更新包裝在事務中。自動遞增字段在事務之外增加,所以我猜測你的一些事務可能會回滾。

+0

謝謝,我會檢查一下。 – 2012-01-10 15:44:41

3

,因爲這只是開始,是有可能,他們正在某處進入2012年或它關係到2012年,也許這個值不會在查找表中,該交易被回滾

當一個事務回滾身份值不被重用,這就是爲什麼你看到差距,你需要找出爲什麼你有回滾

+0

謝謝 - 這個問題實際上是去年年底開始的。儘管我會檢查回滾。 – 2012-01-10 15:44:14