V SQL Server můžete vrátit zpět TRUNCATE z transakce. Jak jste zmínil, zapisuje deallocation do logu.