Ако използвате 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