SQLServer无需Restore恢复误删表(一):恢复表结构
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,最近在研究《Microsoft SQL Server 2012 Internals》这本书,考虑到如何快速恢复误操作数据,如UPDATE、DELETE、TRUNCATE、DROP等操作。当数据库特别大
千家信息网最后更新 2025年11月07日SQLServer无需Restore恢复误删表(一):恢复表结构
最近在研究《Microsoft SQL Server 2012 Internals》这本书,考虑到如何快速恢复误操作数据,如UPDATE、DELETE、TRUNCATE、DROP等操作。当数据库特别大的时候,通过还原数据库恢复误操作数据就会变得非常吃力。
那么如何在不restore database的情况下,快速进行数据恢复呢。这也将是本文将要提到的内容。
首先,简单了解下DROP TABLE操作的原理
1. 删除表的DDL
2. 删除数据页数据
通过分析Transaction Log可知,drop table并不会记录删除每一行数据的日志,drop table最终是通过标记该表数据页为可重写以表示释放空间(当空间不够时,会format掉这些数据页),
当数据库空间不足时,SQL Server可对这部分空间进行数据写入。
因此,我们想要在不restore database情况下恢复数据,就得确保drop table后表的数据页没有被format。一旦数据页被format,那么只能通过restore database方式进行恢复(目前尚未找到其他的恢复方法)。
以下为恢复表结构语句的实例
1. 建表
create table test_drop(col1 tinyint,col2 smallint,col3 int identity(1,1),col4 bigint,col5 varchar(20),col6 char(20),col7 nvarchar(20),col8 nchar(20),col9 datetime,col10 timestamp,col11 uniqueidentifier,col12 sysname,col13 numeric(10,2),col14 xml,col15 money,col16 text)
2. 删除表
drop table test_drop
3. 恢复被删除的表结构语句
exec Recover_Dropped_Table_DDL_Porc 'test_drop'
生成恢复语句如下:
if object_id('dbo.test_drop') is not null print 'dbo.test_drop is existed'elsecreate table dbo.test_drop(col1 tinyint null ,col2 smallint null ,col3 int identity ,col4 bigint null ,col5 varchar(20) collate SQL_Latin1_General_CP1_CI_AS null ,col6 char(20) collate SQL_Latin1_General_CP1_CI_AS null ,col7 nvarchar(20) collate SQL_Latin1_General_CP1_CI_AS null ,col8 nchar(20) collate SQL_Latin1_General_CP1_CI_AS null ,col9 datetime null ,col10 timestamp not null ,col11 uniqueidentifier null ,col12 sysname collate SQL_Latin1_General_CP1_CI_AS not null ,col13 numeric(10,2) null ,col14 xml null ,col15 money null ,col16 text collate SQL_Latin1_General_CP1_CI_AS null )
数据
空间
数据库
语句
结构
情况
吃力
一行
不够
内容
原理
实例
尚未
数据恢复
方式
方法
日志
时候
标记
分析
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
品质优良的聊天软件开发
深圳市轱辘网络技术有限公司
崇明区手机软件开发创新服务
长春软件开发公司哪家好
长宁区市场软件开发来电咨询
怎么打我的世界服务器
洛阳软件开发工资
康保软件开发项目管理
湖南华为服务器维修维保多少钱
易和网软件开发服务商
工行 面试 软件开发
服务器全生命周期管理软件
有关火灾和网络安全
国际服怎么买服务器
宝山区网络技术服务诚信合作
浪潮服务器是什么系统
交通大数据网络安全概率
网络安全法第十二
DSP软件开发上手难不难
悟空问答提交答案时数据库错误
数据库钟
广西网络安全法 知识题目
网络安全风险防护
怀旧服服务器名字不对
删除数据库表中的数据语法
天长工业软件开发技术怎么样
数据库地址端口
本地数据和数据库有什么关系
中立软件开发公司
杭州saas软件开发公司