Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment récupérer les données d'une table tronquée

Si vous utilisez TRANSACTIONS dans votre code, TRUNCATE peut être annulé. Si aucune transaction n'est utilisée et que l'opération TRUNCATE est validée, elle ne peut pas être extraite du fichier journal. TRUNCATE est une opération DDL et n'est pas consignée dans le fichier journal.

DELETE et TRUNCATE peuvent tous deux être annulés lorsqu'ils sont entourés de TRANSACTION si la session en cours n'est pas fermée. Si TRUNCATE est écrit dans l'éditeur de requête entouré de TRANSACTION et si la session est fermée, elle ne peut pas être annulée mais DELETE peut être annulée.

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