在阅读 Mr. 书中的 SQL Server 面试问题时希夫·普拉沙德·柯伊拉腊。我知道,即使使用 truncate table 命令后,数据也可以恢复。
请告诉我当使用“删除”命令删除数据时如何恢复数据以及如果使用“截断”命令删除数据如何恢复数据。
我所知道的是,当我们使用删除命令删除记录时,它的条目是在日志文件中创建的,但我不知道如何从中恢复数据,并且当我读到截断表时,它不会在数据库中输入任何日志条目,那么如何那也可以恢复吗。
如果您能给我任何好的链接来实际一步一步地完成它,那将对我有很大帮助。
我有 sql server 2008。
Thanks
如果您在代码中使用 TRANSACTIONS,则可以回滚 TRUNCATE。如果没有使用事务并且提交了 TRUNCATE 操作,则无法从日志文件中检索它。 TRUNCATE 是 DDL 操作,不会记录在日志文件中。
如果当前会话未关闭,DELETE 和 TRUNCATE 都可以在被 TRANSACTION 包围时回滚。如果 TRUNCATE 是在 TRANSACTION 包围的查询编辑器中编写的,并且如果会话关闭,则无法回滚,但 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)