我错误地使用PROD GUI插入了一些测试记录,这些记录已写入PROD数据库。有没有办法找到这些记录触及的表格和列?
由于
答案 0 :(得分:2)
我认为您没有启用运行跟踪,CDC或其他跟踪机制。因此,以下步骤似乎是一个合理的解决方案:
UPD:根据对此答案的评论(我完全同意),如果您有DEV或TEST环境,您可以在其上执行相同的操作,请执行此操作并在那里查找已修改的记录。之后在PROD上的相同表中找到修改过的记录。
P.S。我无法保证按照这些步骤您可以清除已插入的数据,但可能您可以执行此操作。我还建议在删除数据之前创建完整备份。
答案 1 :(得分:0)
如果您启用了正确的事务日志记录并使用SQL Server 2008及更高版本。您可以尝试使用Change Data Capture Stored Procedures (Transact-SQL)并检查表中发生的更改。希望它有所帮助
答案 2 :(得分:0)
您可以跟踪代码以查看它触及的表格。在dev上运行Profiler,看看它发送的代码或者在输入新记录时触发它,就像你在prod上那样。
如果您有正式的PK和FK关系,您可能会通过反复试验找出,因为它不会让您删除父记录,直到删除所有子项。并在开发环境中测试其他一些记录,以确定可能涉及哪些表。或者您可以编写FK脚本以查看其他表与父表相关的内容。
如果您有审计(因为每个企业解决方案应该有,但我离题),您通常可以通过在审计表中查找当时的交易来查找。我们的审计表同时具有交易的日期时间和用户,这使得更容易过滤这些事情。
当然,如果您了解自己的数据模型,那么在开始之前应该有一个很好的主意。或者,如果您在所有子表中都有一个特定的id并且没有方便的FK,那么您可以检查系统表以查找具有该列名的表。这假定了一个相当标准的命名约定。如果你在不同的表中调用同一列不同的东西,你可能会错过一些。
如果您正在使用ORM,则应该有一些方法来检查对象中与您所执行的特定任务相关的表。因此,如果您插入了实例的测试订单,请查看订单对象中包含的内容。