虽然在先生的书中通过sql server面试问题. shiv prashad koirala.我知道,即使在使用truncate table命令后,数据也可以恢复.
请告诉我如何使用’delete’命令删除数据时如何恢复数据?如果使用’truncate’命令删除数据,如何恢复数据.
我所知道的是,当我们使用delete命令删除记录时,它的条目是在日志文件中生成但我不知道如何从中恢复数据,因为我读到截断表没有输入数据库中的任何日志条目然后如何那也可以恢复.
如果你能给我任何好的联系,几乎一步一步地做到这一点,那将对我有很大的帮助.
我有sql server 2008.
谢谢
解决方法
如果在代码中使用TRANSACTIONS,则可以回滚TRUNCATE.如果没有使用事务并且提交了TRUNCATE操作,则无法从日志文件中检索它. TRUNCATE是DDL操作,它不会记录在日志文件中.
如果当前会话未关闭,则在TRANSACTION包围时,DELETE和TRUNCATE都可以回滚.如果在TRANSACTION包围的查询编辑器中写入TRUNCATE,并且会话已关闭,则无法回滚,但可以回滚DELETE.
USE tempdb GO -- Create Test Table CREATE TABLE TruncateTest (ID INT) INSERT INTO TruncateTest (ID) SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 GO -- Check the data before truncate SELECT * FROM TruncateTest GO -- Begin Transaction BEGIN TRAN -- Truncate Table TRUNCATE TABLE TruncateTest GO -- Check the data after truncate SELECT * FROM TruncateTest GO -- Rollback Transaction ROLLBACK TRAN GO -- Check the data after Rollback SELECT * FROM TruncateTest GO -- Clean up DROP TABLE TruncateTest GO