Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách khôi phục dữ liệu từ bảng bị cắt ngắn

Nếu bạn sử dụng GIAO DỊCH trong mã của mình, TRUNCATE có thể được khôi phục. Nếu không có giao dịch nào được sử dụng và hoạt động TRUNCATE được cam kết, nó không thể được truy xuất từ ​​tệp nhật ký. TRUNCATE là hoạt động DDL và nó không được ghi vào tệp nhật ký.

DELETE và TRUNCATE đều có thể được khôi phục khi được bao quanh bởi TRANSACTION nếu phiên hiện tại chưa đóng. Nếu TRUNCATE được viết trong Trình soạn thảo truy vấn bao quanh bởi TRANSACTION và nếu phiên bị đóng, nó không thể được khôi phục nhưng DELETE có thể được khôi phục.

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. lỗi, dữ liệu chuỗi hoặc nhị phân sẽ bị cắt ngắn khi cố gắng chèn

  2. Tại sao tham gia bên trái t-sql của tôi không hoạt động?

  3. Hiệu suất SQL-Server:Nhanh hơn, một thủ tục được lưu trữ hay một dạng xem?

  4. Tôi nhận được dữ liệu chuỗi, lỗi cắt ngắn phải từ PHP bằng cách sử dụng ODBC và kết nối với phiên bản Microsoft SQL Server 2008R2

  5. Sắp xếp lại và khử trùng lặp các cột SQL dựa trên dữ liệu cột