There is no such thing as a no-logged operation in a user databases.A TRUNCATE TABLE operation delete of all data in the table.

The fact that TRUNCATE TABLE uses fewer transaction log resources.

Let’s Investigate that Can TRUNCATE TABLE be rolled back?

Here I am going to give you one demo where we will truncate table and show you TRUNCATE TABLE operation is logged and rollback.

example script:-

CREATE TABLE testdemo (Id INT IDENTITY, name CHAR (80) DEFAULT 'ABCD'); INSERT INTO testdemo DEFAULT VALUES; GO 1000 BEGIN TRANSACTION; SELECT COUNT(*) [Starting_Table_Row_Count] FROM testdemo TRUNCATE TABLE testdemo SELECT COUNT(*) [Row_Count_After_Truncate] FROM testdemo ROLLBACK TRANSACTION; SELECT COUNT(*) [Row_Count_After_Rollback] FROM testdemo

After execution of above scripts you will get the output like below:-

scripts and output shown above proved that Truncate command is roll backed.

======== Proving that TRUNCATE is a logged command ========================

Use Truncate_Demo; CHECKPOINT; SELECT COUNT(*) [Starting_Log_Row_Count] FROM sys.fn_dblog (NULL, NULL); TRUNCATE TABLE testdemo; SELECT COUNT(*) [Log_Row_Count_After_Truncate] FROM sys.fn_dblog (NULL, NULL);

SELECT [Current LSN], [Operation], [Context], [Transaction ID], [AllocUnitName], [Transaction Name] FROM fn_dblog (NULL, NULL); GO

After execution of above script you will get the out like below where you are able to find the TRUNCATE COMMAND log.

Hence we can say that TRUNCATE TABLE is a logged command and can be rolled back.