如何在SQL Server数据库中回滚数据?

时间:2016-12-29 11:38:04

标签: sql sql-server tsql

我遗憾地通过在SQL Server中使用以下查询从数据库中删除了数据

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

有人可以告诉我如何取回我的数据吗?

这可能吗?

3 个答案:

答案 0 :(得分:1)

有两种交易 - 隐式和显式。

每次执行DML语句时都会使用

隐式事务(在您的情况下为删除)。此交易不是用户处理的。你的qry没有在交易中运行,这是不正确的。

显式事务可以由用户定义(使用begin transaction)。如果不指定事务,则只有隐式事务,这些事务在语句成功时自动更新。

有几种方法可以恢复数据,但绝不会有100%的成功和没有工作。您必须使用一些外部程序作为SysTools SQL Recovery,ApexSQL Recover或Veeam。恢复级别取决于您的存储使用和服务器配置。

只有一种100%的方式是预防(以及备份,更改跟踪等)。

答案 1 :(得分:0)

您可以尝试使用此ApexSQL工具进行恢复,但您可以在备份和措施中考虑避免此类问题。

http://www.apexsql.com/sql_tools_recover.aspx

显然是第三方工具,您需要付费才能使用它。

答案 2 :(得分:0)

这取决于您的服务器配置。但是,默认情况下,SQL Server在执行查询时不会启动事务。因此,如果您没有启动事务,或者事务已启动,但已提交,则无法回滚。

恢复数据的其他方法:如果您的数据库恢复模型设置为完全,并且您有差异备份或完全备份,那么您很幸运。如果不是,则数据缺少forewer。