sql 表重建后数据恢复实例

来源:互联网 发布:淘宝上莫桑石值得买吗 编辑:程序博客网 时间:2024/04/29 08:34

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-》你要是插入语句就出来了