您的位置:首页 > 数据库

sql 表重建后数据恢复实例

2009-08-28 23:45 260 查看
SQL Server Drop Table 表重建后数据恢复实例
工具:Lumigent? Log Explorer?
Version 3.1.1
下载地址:http://c1.good.gd/?FileId=174577

过程再现: 不小心执行了表重建语句,表原有的数据全部丢失,心急如焚,惊慌失措,惶恐不安,生不如死………。
/****** 对象: 表 [dbo].[TestNum_VX] 脚本日期: 2009-8-28 23:26:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TestNum_VX]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TestNum_VX]
GO

/****** 对象: 表 [dbo].[TestNum_VX] 脚本日期: 2009-8-28 23:26:44 ******/
CREATE TABLE [dbo].[TestNum_VX] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[AccNumId] [bigint] NOT NULL ,
[type] [int] NOT NULL ,
[Explain] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[EndDate] [datetime] NOT NULL ,
[createTime] [datetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TestNum_VX] WITH NOCHECK ADD
CONSTRAINT [PK_TestNum_VX] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TestNum_VX] ADD
CONSTRAINT [DF_TestNum_VX_Explain] DEFAULT ('') FOR [Explain],
CONSTRAINT [DF_TestNum_VX_EndDate] DEFAULT (getdate()) FOR [EndDate],
CONSTRAINT [DF_TestNum_VX_cteateTime] DEFAULT (getdate()) FOR [createTime]
GO
exec sp_addextendedproperty N'MS_Description', N'创建时间', N'user', N'dbo', N'table', N'TestNum_VX', N'column', N'createTime'
GO
exec sp_addextendedproperty N'MS_Description', N'测试截止时间', N'user', N'dbo', N'table', N'TestNum_VX', N'column', N'EndDate'
GO
exec sp_addextendedproperty N'MS_Description', N'类形说明', N'user', N'dbo', N'table', N'TestNum_VX', N'column', N'Explain'
GO
exec sp_addextendedproperty N'MS_Description', N'属于哪种测试类型', N'user', N'dbo', N'table', N'TestNum_VX', N'column', N'type'

GO

解决过程:安装Log Explorer 第三方数据恢复工具

--打开log explorer

依次如下操作:
点左边:allach log file
-->设置:sql server ,login name ,password
-->点击:connect
-->选择相应的数据库,选中use on-line log
-->点击:attach 后再次确定
-->点击左边:salvage dropped/truncated data
-->输入table:dbo.ta
输入approximate time the table was dropped/truncated:
2008-08-06 16:00:00 (这儿自行修改)
condition:选择table was droped
-->点击:create

此时log explorer自动打一个文本文件,内容如下

create table [dbo].[TestNum_VX] ([id] int)
insert into [dbo].[TestNum_VX] ([id]) values (1)
…………
复制insert语句 在查询分析器里执行以下即可恢复数据

******* 但有的数据确还是恢复不了,怎么办……心急如焚,惊慌失措,惶恐不安,生不如死………。

解决过程:
安装后打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录,
点击“view ddl commands”里面就有很多drop table 命令
点击下面的“undo”按钮是生成表结构的语句
点击下面的“salvage”按钮是生成插入语句的 注:(如果把表给重建了系统会自动生成这些用于恢复原有数据插入语句)

我按照时间 找到了我日志中删除表的语句,点中后salvage才显示可用状态,点击保存-》提示是否查看-》yes-》你要是插入语句就出来了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: