如何通过sql日志还原数据库

hyctlxs 2008-03-12 09:26:25
数据库坏掉了,我通过伪操作,将数据库附加为:只读、脱机、紧急恢复模式,把表里面的数据导到另外一个新建的库里面,但是这里面有一个非常重要的表坏掉了,怎末才能把这个表里面的数据给导出来呢?主要是有一个表里面的索引指向不对了,用dbcc checktable 修复也修复不了; 用最低级别修复的话,肯定是丢数据的了; 但是这个表里面的数据是非常重要的,不能丢; 里面存的是结款数据;
通过日志的方式能把这个表里面的数据给取出来么?
...全文
1932 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhsxsh 2008-03-15
  • 打赏
  • 举报
回复
先删除索引
再建新索引
试试看一般是可以的
我以前做过
特殊的情况我就不好说了
wsyplzbfdl 2008-03-15
  • 打赏
  • 举报
回复
主要是有一个表里面的索引指向不对了,

可以重建索引

我以前碰到过io逻辑错误

报错为824
fan22176391 2008-03-12
  • 打赏
  • 举报
回复
--如果你之前就做过日志备份。那么可以用这个来还原。

RESTORE DATABASE db FROM DISK='完全备份地址' WITH NORECOVERY
RESTORE DATABASE db FROM DISK='差异备份地址' WITH NORECOVERY
RESTORE LOG DB WITH DISK='日志备份地址' WITH RECOVERY
dawugui 2008-03-12
  • 打赏
  • 举报
回复
--通过日志恢复数据库

USE master

--创建数据库
CREATE DATABASE db
ON PRIMARY(
NAME='db_data',
FILENAME= 'c:\db_data.mdf')
LOG ON(
NAME='db_log',
FILENAME ='c:\db.ldf')
GO

--创建表
CREATE TABLE db.dbo.ta(id int)
INSERT db.dbo.ta SELECT id FROM sysobjects
GO
--做文件组备份
BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT

--备份后,再做数据处理
CREATE TABLE db.dbo.tb(id int)
INSERT db.dbo.tb SELECT id FROM sysobjects
GO

/*--下面演示了破坏数据文件的处理,这些操作在操作系统中进行

1. 停止SQL Server服务(msqlserver服务)
2. 删除文件 c:\db_data.ndf (模拟破坏)
3. 重新SQL Server服务,此时数据库DB置疑
--*/
GO

--下面演示了如何恢复数据
--首先要备份当前日志
BACKUP LOG db TO DISK='c:\db_log.bak' WITH FORMAT,NO_TRUNCATE
--利用文件组备份恢复破坏的文件
RESTORE DATABASE db FROM DISK='c:\db.bak' WITH NORECOVERY
--还原到日志点
RESTORE LOG db FROM DISK='c:\db_log.bak' WITH RECOVERY
--显示已经恢复的数据
SELECT COUNT(*) FROM db.dbo.ta
SELECT COUNT(*) FROM db.dbo.tb
GO

--删除测试
DROP DATABASE db

dawugui 2008-03-12
  • 打赏
  • 举报
回复
就上面这个.
hyctlxs 2008-03-12
  • 打赏
  • 举报
回复
谢谢; 我先试试了;

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧