Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como recuperar dados da tabela truncada


Se você usar TRANSACTIONS em seu código, TRUNCATE pode ser revertido. Se nenhuma transação for usada e a operação TRUNCATE for confirmada, ela não poderá ser recuperada do arquivo de log. TRUNCATE é uma operação DDL e não está logada no arquivo de log.

DELETE e TRUNCATE podem ser revertidos quando cercados por TRANSACTION se a sessão atual não for fechada. Se TRUNCATE for escrito no Query Editor cercado por TRANSACTION e se a sessão for fechada, ela não poderá ser revertida, mas DELETE poderá ser revertida.
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