Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak odzyskać dane z obciętej tabeli

Jeśli używasz TRANSACTIONS w kodzie, TRUNCATE można wycofać. Jeśli nie użyto żadnej transakcji, a operacja TRUNCATE została zatwierdzona, nie można jej pobrać z pliku dziennika. TRUNCATE to operacja DDL i nie jest rejestrowana w pliku dziennika.

DELETE i TRUNCATE mogą zostać wycofane, gdy są otoczone przez TRANSACTION, jeśli bieżąca sesja nie jest zamknięta. Jeśli TRUNCATE jest napisane w Edytorze zapytań w otoczeniu TRANSACTION i jeśli sesja jest zamknięta, nie można jej cofnąć, ale DELETE można cofnąć.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja aktualizacji dynamicznej ze zmiennymi nazwami kolumn

  2. Wstaw SQL Bulk z relacjami nadrzędny/podrzędny, czy kolejność jest zachowana?

  3. Analiza wydajności we/wy dla SQL Server

  4. Uzyskaj jeden z wpisów w zduplikowanych rekordach

  5. Pokaż obraz w raporcie RDLC z bazy danych według ścieżki obrazu