回答
如果啓用了正確的事務日誌和使用SQL Server 2008及以上。您可以嘗試使用Change Data Capture Stored Procedures (Transact-SQL)並檢查表中發生的更改。希望它有幫助
我想你沒有運行軌跡,CDC或其他跟蹤機制啓用。所以它看起來像下面的步驟將是一個合理的解決方案:
- 確保您不能找到和使用模板調整從 應用程序GUI
- 運行SQL事件探查器跟蹤丟棄數據(它會給你足夠的信息)。包括ApplicationName和HostName列以標識您的連接。
- 使用用戶界面插入一條測試記錄(嘗試執行與以前相同的操作)
- 停止跟蹤並找到您插入的數據。
- 確定您的應用程序使用ApplicationName,HostName和SPID完成的其他修改。
- 創建一個SQL腳本來刪除這些記錄。
- 確定您已經(可能是他們被插入到相同的表)之前插入記錄
- 編寫一個查詢,刪除它們太
- Open事務
- 刪除這些記錄
- 檢查您是否只刪除需要的記錄
- 提交交易
UPD:按照這個答案的評論(與我完全同意),如果你有DEV或TEST環境,您可以在其中執行相同的操作,執行此操作並在其中找到修改的記錄。之後,在PROD的相同表格中找到修改後的記錄。
P.S.我無法保證,按照這些步驟,您將能夠清理您插入的數據,但可能您可以執行此操作。我還建議在刪除數據之前創建完整備份。
那麼你可以通過代碼來查看它接觸到的表格。在dev上運行Profiler以查看它發送的代碼或在按照您在prod上執行的相同方式輸入新記錄時觸發它所調用的代碼。
如果您有正式的PK和FK關係,您可能會通過反覆試驗發現,因爲它不會讓您刪除父記錄,直到刪除所有的孩子。並在開發環境中測試其他一些記錄,以確定可能涉及哪些表。或者你可以編寫FK腳本來查看其他表與父表有關。
如果您已經進行審計(因爲每個企業解決方案都應該有,但我離題),那麼您通常可以通過在審計表中查找當時的事務來查找。我們的審計表包含交易日期和用戶,這使得更容易篩選這些事情。
當然,如果你知道你的數據模型,你應該有一個不錯的主意,然後再開始。或者,如果您的所有子表中都有特定的ID,並且您沒有方便的FK,那麼您可以查看系統表以查找具有該列名稱的表。儘管這假設一個相當標準的命名約定。如果你在不同的表格中調用同一列不同的東西,你可能會錯過一些。
如果您使用的是ORM,應該有一些辦法來檢查是在與你做的特定任務的對象是什麼表。因此,如果您插入實例的測試訂單,請檢查訂單對象中包含的內容。
- 1. Python doctest:如何測試數據庫插入或刪除功能?
- 2. 刪除並插入新記錄到數據庫而不刷新
- 3. 插入記錄到Msaccess數據庫
- 4. PHP - 插入記錄到SQL數據庫
- 5. 插入新記錄到數據庫
- 6. C#插入記錄到數據庫表
- 7. 向數據庫插入值時刪除記錄
- 8. 如何防止pytest刪除測試用例之間的數據庫記錄?
- 9. 數據庫插入腳本準備測試(記錄數據狀態?)
- 10. 刪除數據庫中的記錄cakephp
- 11. 刪除數據庫中的記錄
- 12. Swift中的SQLite:插入記錄到數據庫後無法插入,更新和刪除記錄
- 13. 插入記錄的最佳數據庫
- 14. 插入數據表記錄到MySQL數據庫使用PHP
- 15. 使用rspec測試數據庫記錄
- 16. Vaadin從數據庫中刪除記錄
- 17. 從數據庫中刪除記錄
- 18. 從數據庫中刪除記錄
- 19. 從sqlite數據庫刪除記錄
- 20. 批量刪除記錄在數據庫
- 21. AJAX呼叫刪除數據庫記錄
- 22. 刪除聊天記錄從數據庫
- 23. 從數據庫中刪除記錄
- 24. 刪除記錄,但在數據庫
- 25. 從數據庫中刪除記錄
- 26. 從MySQL數據庫中刪除記錄
- 27. 從MDF數據庫刪除記錄
- 28. 我該如何測試一個將記錄插入RIA服務數據庫的函數?
- 29. 如何將junit測試運行結果記錄到數據庫
- 30. 插入數百萬條記錄與重複數據刪除SQL
是的。使用SELECT語句和DELETE語句。 –
多數民衆贊成在有趣的,你怎麼知道什麼所有表更新與這些記錄在第一個地方? – Khatra
通過檢查你的GUI的源代碼。或者在運行GUI時在SQL Server上運行跟蹤。這將告訴您插入中使用的對象,只要確切的行需要視覺檢查和分析。 –