加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何从截断的表中恢复数据

发布时间:2020-12-12 06:49:19 所属栏目:MsSql教程 来源:网络整理
导读:虽然在先生的书中通过sql server面试问题. shiv prashad koirala.我知道,即使在使用truncate table命令后,数据也可以恢复. 请告诉我如何使用’delete’命令删除数据时如何恢复数据?如果使用’truncate’命令删除数据,如何恢复数据. 我所知道的是,当我们使用d
虽然在先生的书中通过sql server面试问题. shiv prashad koirala.我知道,即使在使用truncate table命令后,数据也可以恢复.

请告诉我如何使用’delete’命令删除数据时如何恢复数据?如果使用’truncate’命令删除数据,如何恢复数据.

我所知道的是,当我们使用delete命令删除记录时,它的条目是在日志文件中生成但我不知道如何从中恢复数据,因为我读到截断表没有输入数据库中的任何日志条目然后如何那也可以恢复.

如果你能给我任何好的联系,几乎一步一步地做到这一点,那将对我有很大的帮助.

我有sql server 2008.

谢谢

解决方法

如果在代码中使用TRANSACTIONS,则可以回滚TRUNCATE.如果没有使用事务并且提交了TRUNCATE操作,则无法从日志文件中检索它. TRUNCATE是DDL操作,它不会记录在日志文件中.

如果当前会话未关闭,则在TRANSACTION包围时,DELETE和TRUNCATE都可以回滚.如果在TRANSACTION包围的查询编辑器中写入TRUNCATE,并且会话已关闭,则无法回滚,但可以回滚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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读