SlideShare una empresa de Scribd logo
1 de 4
无数据库日志文件恢复数据库方法两则
文章作者:Sabine


方法一

1.新建一个同名的数据库

2.再停掉 sql server(注意不要分离数据库)

3.用原数据库的数据文件覆盖掉这个新建的数据库

4.再重启 sql server

5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)

6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用

数据库的脚本创建一个新的数据库,并将数据导进去就行了.

USE MASTER
GO
SP_CONFIGURE ALLOW UPDATES,1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME=置疑的数据库名
Go
sp_dboption 置疑的数据库名, single user, true
Go
DBCC CHECKDB(置疑的数据库名)
Go
update sysdatabases set status =28 where name=置疑的数据库名
Go
sp_configure allow updates, 0 reconfigure with override
Go
sp_dboption 置疑的数据库名, single user, false
Go


方法二

事情的起因

昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件
XXX_Data.ldf 文件已经增长到了 3GB,于 是我决意缩小这个日志文件。经过收缩数据库等操作未果后,我犯了
一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数 据库恢复的文章
上都说道:“无论如何都要保证数据库日志文件存在,它至关重要”,甚至微软甚至有一篇 KB 文章讲如何只靠日志
文件恢复数据库的。我真是不知 道我那时候是怎么想的?!

这下子坏了!这个数据库连不上了,企业管理器在它的旁边写着“(置疑)”。而且最要命的,这个数据库从来没有备
份了。我唯一找得到的是迁移半年前的另外一个数据库服务器,应用倒是能用了,但是少了许多记录、表和存储
过程。真希望这只是一场噩梦!

没有效果的恢复步骤
附加数据库

_Rambo 讲过被删除日志文件中不存在活动日志时,可以这么做来恢复:

1,分离被置疑的数据库,可以使用 sp_detach_db

2,附加数据库,可以使用 sp_attach_single_file_db

但是,很遗憾,执行之后,SQL Server 质疑数据文件和日志文件不符,所以无法附加数据库数据文件。

DTS 数据导出

不行,无法读取 XXX 数据库,DTS Wizard 报告说“初始化上下文发生错误”。

紧急模式

没有日志用于恢复时,可以这么做:

1,把数据库设置为 emergency mode

2,重新建立一个 log 文件

3,把 SQL Server 重新启动一下

4,把应用数据库设置成单用户模式

5,做 DBCC CHECKDB

6,如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉

我实践了一下,把应用数据库的数据文件移走,重新建立一个同名的数据库 XXX,然后停掉 SQL 服务,把原来的
数据文件再覆盖回来。之后,按照怡红公子的步骤走。

但是,也很遗憾,除了第 2 步之外,其他步骤执行非常成功。可惜,重启 SQL Server 之后,这个应用数据库仍
然是置疑!

不过,让我欣慰的是,这么做之后,倒是能够 Select 数据了,让我大出一口气。只不过,组件使用数据库时,报
告说:“发生错误:-2147467259,未能在数据库 XXX 中运行 BEGIN TRANSACTION,因为该数据库处于回避
恢复模式。”

最终成功恢复的全部步骤

设置数据库为紧急模式

1,停掉 SQL Server 服务;

2,把应用数据库的数据文件 XXX_Data.mdf 移走;

3,重新建立一个同名的数据库 XXX;

4,停掉 SQL 服务;

5,把原来的数据文件再覆盖回来;
6,运行以下语句,把该数据库设置为紧急模式;

运行“Use Master
Go
sp_configure allow updates, 1
reconfigure with override
Go”


执行结果:

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

已将配置选项 allow updates 从 0 改为 1。请运行 RECONFIGURE 语句以安装。

接着运行“update sysdatabases set status = 32768 where name = XXX”

执行结果:

(所影响的行数为 1 行)

重启 SQL Server 服务;

运行以下语句,把应用数据库设置为 Single User 模式;

运行“sp_dboption XXX, single user, true”
执行结果:
命令已成功完成。
做 DBCC CHECKDB;
运行“DBCC CHECKDB(XXX)”
执行结果:
XXX 的 DBCC 结果。
sysobjects 的 DBCC 结果。
对象 sysobjects 有 273 行,这些行位于 5 页中。
sysindexes 的 DBCC 结果。
对象 sysindexes 有 202 行,这些行位于 7 页中。
syscolumns 的 DBCC 结果。
………
运行以下语句把系统表的修改选项关掉;
运行“sp_resetstatus "XXX"
go
sp_configure allow updates, 0
reconfigure with override
Go”


执行结果:

在 sysdatabases 中更新数据库 XXX 的条目之前,模式 = 0,状态 = 28(状态 suspect_bit = 0),没有更
新 sysdatabases 中的任何行,因为已正确地重置了模式和状态。没有错误,未进行任何更改。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

已将配置选项 allow updates 从 1 改为 0。请运行 RECONFIGURE 语句以安装。
重新建立另外一个数据库 XXX.Lost;

DTS 导出向导

运行 DTS 导出向导;

复制源选择 EmergencyMode 的数据库 XXX,导入到 XXX.Lost;

选择“在 SQL Server 数据库之间复制对象和数据”,试了多次,好像不行,只是复制过来了所有表结构,但是没
有数据,也没有视图和存储过程,而且 DTS 向导最后报告复制失败;

所以最后选择“从源数据库复制表和视图”,但是后来发现,这样总是只能复制一部分表记录;

于是选择“用一条查询指定要传输的数据”,缺哪个表记录,就导哪个;

视图和存储过程是执行 SQL 语句添加的。

这样,XXX.Lost 数据库就可以替换原来的应用数据库了。

Más contenido relacionado

La actualidad más candente

Oracle Data Buffer Cache
Oracle Data Buffer CacheOracle Data Buffer Cache
Oracle Data Buffer CacheSky Jian
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a databaseted-xu
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1Zianed Hou
 
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复Lixun Peng
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220Jinrong Ye
 
第4章 sql server数据库的管理
第4章   sql server数据库的管理第4章   sql server数据库的管理
第4章 sql server数据库的管理hanmo1988
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redispaitoubing
 
20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_ricoRico Chen
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程Lixun Peng
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
第4章 数据库管理
第4章 数据库管理第4章 数据库管理
第4章 数据库管理zhang shuren
 
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo dbLucien Li
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题WASecurity
 
Db2 different basis_installa
Db2 different basis_installaDb2 different basis_installa
Db2 different basis_installaHermes Chiang
 
Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Chien Chung Shen
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)Cyril Wang
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)Cyril Wang
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略maclean liu
 

La actualidad más candente (20)

Oracle Data Buffer Cache
Oracle Data Buffer CacheOracle Data Buffer Cache
Oracle Data Buffer Cache
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a database
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1
 
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220
 
第4章 sql server数据库的管理
第4章   sql server数据库的管理第4章   sql server数据库的管理
第4章 sql server数据库的管理
 
Oracle 資料庫建立
Oracle 資料庫建立Oracle 資料庫建立
Oracle 資料庫建立
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redis
 
20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
第4章 数据库管理
第4章 数据库管理第4章 数据库管理
第4章 数据库管理
 
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo db
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题
 
Db2 different basis_installa
Db2 different basis_installaDb2 different basis_installa
Db2 different basis_installa
 
Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
 
Mysql集群
Mysql集群Mysql集群
Mysql集群
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
 

Destacado

中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析wensheng wei
 
Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器wensheng wei
 
入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程wensheng wei
 
最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践wensheng wei
 
原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏wensheng wei
 
建立Access数据库的安全门
建立Access数据库的安全门建立Access数据库的安全门
建立Access数据库的安全门wensheng wei
 
Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...wensheng wei
 

Destacado (10)

几米语录
几米语录几米语录
几米语录
 
中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析
 
如何学好Java?
如何学好Java?如何学好Java?
如何学好Java?
 
Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器
 
CSS规范:
CSS规范:CSS规范:
CSS规范:
 
入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程
 
最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践
 
原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏
 
建立Access数据库的安全门
建立Access数据库的安全门建立Access数据库的安全门
建立Access数据库的安全门
 
Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...
 

Similar a 无数据库日志文件恢复数据库方法两则

Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
发布系统安装说明
发布系统安装说明发布系统安装说明
发布系统安装说明Yiwei Ma
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用Michael Zhang
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110bngoogle
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Justin Lin
 
整合資料庫
整合資料庫整合資料庫
整合資料庫Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Justin Lin
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作maclean liu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制maclean liu
 
關聯式資料庫系統的規劃
關聯式資料庫系統的規劃關聯式資料庫系統的規劃
關聯式資料庫系統的規劃Simon Huang
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
MySQL快速入门与提高
MySQL快速入门与提高MySQL快速入门与提高
MySQL快速入门与提高mysqlpub
 
Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Zianed Hou
 
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享Wade Huang
 
Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面Tianwei Liu
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)Lixun Peng
 

Similar a 无数据库日志文件恢复数据库方法两则 (20)

Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
发布系统安装说明
发布系统安装说明发布系统安装说明
发布系统安装说明
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
Mysql Replication
Mysql ReplicationMysql Replication
Mysql Replication
 
MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
 
整合資料庫
整合資料庫整合資料庫
整合資料庫
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
 
關聯式資料庫系統的規劃
關聯式資料庫系統的規劃關聯式資料庫系統的規劃
關聯式資料庫系統的規劃
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
MySQL快速入门与提高
MySQL快速入门与提高MySQL快速入门与提高
MySQL快速入门与提高
 
Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1
 
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
 
Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
 
Why use MySQL
Why use MySQLWhy use MySQL
Why use MySQL
 

Más de wensheng wei

你会柔软地想起这个校园
你会柔软地想起这个校园你会柔软地想起这个校园
你会柔软地想起这个校园wensheng wei
 
几米语录(1)
几米语录(1)几米语录(1)
几米语录(1)wensheng wei
 
高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术wensheng wei
 
存储过程编写经验和优化措施
存储过程编写经验和优化措施存储过程编写经验和优化措施
存储过程编写经验和优化措施wensheng wei
 
CentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 ZendCentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 Zendwensheng wei
 
Happiness is a Journey
Happiness is a JourneyHappiness is a Journey
Happiness is a Journeywensheng wei
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶 wensheng wei
 
Linux Shortcuts and Commands:
Linux Shortcuts and Commands:Linux Shortcuts and Commands:
Linux Shortcuts and Commands:wensheng wei
 
Java正则表达式详解
Java正则表达式详解Java正则表达式详解
Java正则表达式详解wensheng wei
 
Linux Security Quick Reference Guide
Linux Security Quick Reference GuideLinux Security Quick Reference Guide
Linux Security Quick Reference Guidewensheng wei
 
Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法wensheng wei
 
如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10wensheng wei
 
数据库设计方法、规范与技巧
数据库设计方法、规范与技巧数据库设计方法、规范与技巧
数据库设计方法、规范与技巧wensheng wei
 
揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件wensheng wei
 
mysql的字符串函数
mysql的字符串函数mysql的字符串函数
mysql的字符串函数wensheng wei
 

Más de wensheng wei (20)

你会柔软地想起这个校园
你会柔软地想起这个校园你会柔软地想起这个校园
你会柔软地想起这个校园
 
几米语录(1)
几米语录(1)几米语录(1)
几米语录(1)
 
我的简历
我的简历我的简历
我的简历
 
高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术
 
存储过程编写经验和优化措施
存储过程编写经验和优化措施存储过程编写经验和优化措施
存储过程编写经验和优化措施
 
CentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 ZendCentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 Zend
 
Happiness is a Journey
Happiness is a JourneyHappiness is a Journey
Happiness is a Journey
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶
 
Linux Shortcuts and Commands:
Linux Shortcuts and Commands:Linux Shortcuts and Commands:
Linux Shortcuts and Commands:
 
Java正则表达式详解
Java正则表达式详解Java正则表达式详解
Java正则表达式详解
 
Linux Security Quick Reference Guide
Linux Security Quick Reference GuideLinux Security Quick Reference Guide
Linux Security Quick Reference Guide
 
issue35 zh-CN
issue35 zh-CNissue35 zh-CN
issue35 zh-CN
 
Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法
 
Subversion FAQ
Subversion FAQSubversion FAQ
Subversion FAQ
 
如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10
 
ubunturef
ubunturefubunturef
ubunturef
 
数据库设计方法、规范与技巧
数据库设计方法、规范与技巧数据库设计方法、规范与技巧
数据库设计方法、规范与技巧
 
揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件
 
mysql的字符串函数
mysql的字符串函数mysql的字符串函数
mysql的字符串函数
 
Java学习路径
Java学习路径Java学习路径
Java学习路径
 

无数据库日志文件恢复数据库方法两则

  • 1. 无数据库日志文件恢复数据库方法两则 文章作者:Sabine 方法一 1.新建一个同名的数据库 2.再停掉 sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启 sql server 5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) 6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用 数据库的脚本创建一个新的数据库,并将数据导进去就行了. USE MASTER GO SP_CONFIGURE ALLOW UPDATES,1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME=置疑的数据库名 Go sp_dboption 置疑的数据库名, single user, true Go DBCC CHECKDB(置疑的数据库名) Go update sysdatabases set status =28 where name=置疑的数据库名 Go sp_configure allow updates, 0 reconfigure with override Go sp_dboption 置疑的数据库名, single user, false Go 方法二 事情的起因 昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件 XXX_Data.ldf 文件已经增长到了 3GB,于 是我决意缩小这个日志文件。经过收缩数据库等操作未果后,我犯了 一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数 据库恢复的文章 上都说道:“无论如何都要保证数据库日志文件存在,它至关重要”,甚至微软甚至有一篇 KB 文章讲如何只靠日志 文件恢复数据库的。我真是不知 道我那时候是怎么想的?! 这下子坏了!这个数据库连不上了,企业管理器在它的旁边写着“(置疑)”。而且最要命的,这个数据库从来没有备 份了。我唯一找得到的是迁移半年前的另外一个数据库服务器,应用倒是能用了,但是少了许多记录、表和存储 过程。真希望这只是一场噩梦! 没有效果的恢复步骤
  • 2. 附加数据库 _Rambo 讲过被删除日志文件中不存在活动日志时,可以这么做来恢复: 1,分离被置疑的数据库,可以使用 sp_detach_db 2,附加数据库,可以使用 sp_attach_single_file_db 但是,很遗憾,执行之后,SQL Server 质疑数据文件和日志文件不符,所以无法附加数据库数据文件。 DTS 数据导出 不行,无法读取 XXX 数据库,DTS Wizard 报告说“初始化上下文发生错误”。 紧急模式 没有日志用于恢复时,可以这么做: 1,把数据库设置为 emergency mode 2,重新建立一个 log 文件 3,把 SQL Server 重新启动一下 4,把应用数据库设置成单用户模式 5,做 DBCC CHECKDB 6,如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉 我实践了一下,把应用数据库的数据文件移走,重新建立一个同名的数据库 XXX,然后停掉 SQL 服务,把原来的 数据文件再覆盖回来。之后,按照怡红公子的步骤走。 但是,也很遗憾,除了第 2 步之外,其他步骤执行非常成功。可惜,重启 SQL Server 之后,这个应用数据库仍 然是置疑! 不过,让我欣慰的是,这么做之后,倒是能够 Select 数据了,让我大出一口气。只不过,组件使用数据库时,报 告说:“发生错误:-2147467259,未能在数据库 XXX 中运行 BEGIN TRANSACTION,因为该数据库处于回避 恢复模式。” 最终成功恢复的全部步骤 设置数据库为紧急模式 1,停掉 SQL Server 服务; 2,把应用数据库的数据文件 XXX_Data.mdf 移走; 3,重新建立一个同名的数据库 XXX; 4,停掉 SQL 服务; 5,把原来的数据文件再覆盖回来;
  • 3. 6,运行以下语句,把该数据库设置为紧急模式; 运行“Use Master Go sp_configure allow updates, 1 reconfigure with override Go” 执行结果: DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 已将配置选项 allow updates 从 0 改为 1。请运行 RECONFIGURE 语句以安装。 接着运行“update sysdatabases set status = 32768 where name = XXX” 执行结果: (所影响的行数为 1 行) 重启 SQL Server 服务; 运行以下语句,把应用数据库设置为 Single User 模式; 运行“sp_dboption XXX, single user, true” 执行结果: 命令已成功完成。 做 DBCC CHECKDB; 运行“DBCC CHECKDB(XXX)” 执行结果: XXX 的 DBCC 结果。 sysobjects 的 DBCC 结果。 对象 sysobjects 有 273 行,这些行位于 5 页中。 sysindexes 的 DBCC 结果。 对象 sysindexes 有 202 行,这些行位于 7 页中。 syscolumns 的 DBCC 结果。 ……… 运行以下语句把系统表的修改选项关掉; 运行“sp_resetstatus "XXX" go sp_configure allow updates, 0 reconfigure with override Go” 执行结果: 在 sysdatabases 中更新数据库 XXX 的条目之前,模式 = 0,状态 = 28(状态 suspect_bit = 0),没有更 新 sysdatabases 中的任何行,因为已正确地重置了模式和状态。没有错误,未进行任何更改。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 已将配置选项 allow updates 从 1 改为 0。请运行 RECONFIGURE 语句以安装。
  • 4. 重新建立另外一个数据库 XXX.Lost; DTS 导出向导 运行 DTS 导出向导; 复制源选择 EmergencyMode 的数据库 XXX,导入到 XXX.Lost; 选择“在 SQL Server 数据库之间复制对象和数据”,试了多次,好像不行,只是复制过来了所有表结构,但是没 有数据,也没有视图和存储过程,而且 DTS 向导最后报告复制失败; 所以最后选择“从源数据库复制表和视图”,但是后来发现,这样总是只能复制一部分表记录; 于是选择“用一条查询指定要传输的数据”,缺哪个表记录,就导哪个; 视图和存储过程是执行 SQL 语句添加的。 这样,XXX.Lost 数据库就可以替换原来的应用数据库了。