我们的测试数据库突然丢失了行。我们希望他们回来。
有没有办法筛选今天发生在数据库上的所有事情?每个 SQL 语句?我认为这种东西在事务日志中,但不知道如何查看它。
有没有办法撤消删除操作?
顺便说一句:是的,我们确实有备份,但也希望找到删除的原因......
我们的测试数据库突然丢失了行。我们希望他们回来。
有没有办法筛选今天发生在数据库上的所有事情?每个 SQL 语句?我认为这种东西在事务日志中,但不知道如何查看它。
有没有办法撤消删除操作?
顺便说一句:是的,我们确实有备份,但也希望找到删除的原因......
[迟到的答案,但希望有用]
有一种方法可以使用事务日志恢复已删除的行,但前提是您使用 3rd 方工具并且只有您的数据库处于完全恢复模式。
戴尔(前身为 Quest)拥有Toad for SQL Server,ApexSQL 拥有ApexSQL Log和ApexSQL Recover,它们还可以读取 t-log 并恢复数据。不幸的是,Red Gate 的 Log Rescue 只能读取 SQL Server 2000 上的日志。
还有一种方法可以使用未记录的 dbcc log 命令读取 t-log。在此处查看更多详细信息。
考虑到您已经有数据库备份,您可以在单独的数据库中恢复这些备份,然后使用市场上存在的许多数据比较工具之一将丢失的数据插入生产数据库。当然这只能在创建备份之前恢复数据删除。
您可以使用Red Gate的一些工具来做到这一点,但需要花费一些。看看SQL Log Rescue。
否则,我会很想进行还原。
您需要第三方工具来执行此操作。该工具必须能够进入事务日志并查看日志条目,以便您了解发生了什么。我没有使用任何这些工具,但我会尝试 Red Gate 的 SQL Log Rescue 作为初学者。试试看:
我会给 ChronicDB 一个免费版本的尝试,而不是为 Red Gate 付费
Rollback
您可以使用SQL Server 中的命令撤消事务。但是,如果事务在事务中执行,您需要知道事务可以回滚Begin
。