コードで 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