No SQL Server, você pode reverter um TRUNCATE de uma transação. Ele grava a desalocação de página no log, como você mencionou.