回答
如果启用了正确的事务日志和使用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上运行跟踪。这将告诉您插入中使用的对象,只要确切的行需要视觉检查和分析。 –