sql-server – 如何从截断的表中恢复数据

前端之家收集整理的这篇文章主要介绍了sql-server – 如何从截断的表中恢复数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
虽然在先生的书中通过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
原文链接:https://www.f2er.com/mssql/77757.html

猜你在找的MsSQL相关文章