2016-12-29 28 views
0

我已经在SQL Server中使用以下查询不幸删除了数据库中的数据如何回滚SQL Server数据库中的数据?

exec usp_delete_cascade "someTable", "id='somexyz'" 

谁能告诉我如何找回我的数据?

这可能吗?

+0

我认为这是不可能的,至少你有你的数据库的备份,并且可以从那里恢复数据 – Mitrucho

+0

您可以回滚事务,您可以恢复备份,一方或另一方。鉴于这个问题,你很可能只有后者的选择。如果您没有备份,但您确实有一个事务日志,那么您可以在执行该语句之前重新生成数据库。然后,您可以恢复到较早的点(或重新创建一个空数据库)并重播事务日志。我没有这方面的经验。备份是你的朋友。 –

+0

恢复最近的备份,也许..... –

回答

1

有两种事务 - 隐式和显式。

隐式事务用于每次您执行DML语句(在您的案例中删除)。该事务不是用户处理的。并不是你的qry没有在交易中运行。

显性事务可通过用户(与开始事务)来定义。如果不指定事务,则只有隐式事务,当语句成功时它们自动合并。

有几种方法如何恢复数据,但从来没有100%的成功,并没有工作。您必须使用一些外部程序作为SysTools SQL恢复,ApexSQL恢复或Veeam。恢复级别取决于您的存储使用情况和服务器配置。

只有一个100%的方式是prevension(和备份,变更跟踪等)。

+0

我会推荐SysTools SQL恢复,因为它对我来说非常有帮助,当我从勒索软件攻击中取回数据库时。 –

0

这取决于您的服务器配置。但是,默认情况下,SQL Server在执行查询时不启动事务。所以,如果你没有开始交易,或者开始交易,但是提交,回滚是不可能的。

其它方式来恢复数据:如果您的数据库恢复模型设置为完全和你有差异或完整备份,你就是幸运的。如果否,则数据丢失。

相关问题