SQL Server灾难恢复(转帖)

原创 2004年12月31日 10:31:00

1. 首先确认已经备份了.mdf和.ldf文件。

2. 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。

3. 用原有的.mdf和.ldf文件覆盖新建数据库对应的.mdf和.ldf文件。

4. 重新启动SQL Server服务,这是应该会看到这个数据库处于置疑(Suspect)状态。

5. 在SQL查询分析器中执行以下命令,以允许更新系统表:

use master

go

sp_configure ‘allow updates’,1

reconfigure with override

go

6. 将这个数据库置为紧急模式:

update sysdatabases set status = 32768 where name = 'db_name'

go

7. 使用DBCC CHECKDB命令检查数据库中的错误:

DBCC CHECKDB(‘db_name’)

GO

8. 如果DBCC CHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复:

sp_dboption 'db_name',’single user’,’true’

DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)

GO

如果在执行DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQL Server服务,然后继续尝试。

9. 如果DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误:

重新执行DBCC CHECKDB(‘db_name’)命令,确认数据库中已没有错误存在。

清除数据库的置疑状态:sp_resetstatus 'db_name'

清除数据库的单用户模式状态:sp_dboption 'db_name',’single user’,’false’

重新启动SQL Server服务,如果一切正常的话,则数据库已经成功恢复。

10. 如果以上步骤都不能解决问题的话,请参考附件中的文档尝试通过重建事务日志来恢复数据库中的数据。

如果您只有MDF文件,问题就更加复杂一些,我们需要直接重建事务日志了:


1. 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。

2. 用原有的ldf文件覆盖新建数据库对应的.mdf文件,将其日志文件(.ldf)删除。

3. 启动SQL Server服务,并将数据库置为紧急模式(同上: 步骤5和步骤6)。

4. 停止并重新启动SQL Server服务。

5. 执行以下命令重建数据库日志文件:(下面是个示例,您要用您实际的数据库名)

DBCC REBUILD_LOG(’cas_db’, 'D:/cas_db/cas_db_Log.LDF')

6. 重新将该数据库置为单用户模式。(http://support.microsoft.com/?id=264154)

7. 再次尝试使用DBCC CHECKTABLE或DBCC CHECKDB命令检查并修复数据库中的错误。

SQL Server的“高可用性”与“灾难恢复” 之一 总体介绍

作为一个数据库服务,SQL Server其实可以分成两个部分: 1)  SQL Server服务本身 SQL作为一个应用服务,接受用户的连接,处理用户发过来的各项请求等。这部分功能是由一组安装在Win...
  • hangkk2008
  • hangkk2008
  • 2014年02月13日 16:48
  • 1106

SQL 2008R2 误删除数据恢复方法(一)

原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 本来想记录一下利用recovery for sql  server 这个软件...
  • qyx0714
  • qyx0714
  • 2017年06月20日 11:52
  • 1060

SQL SERVER 2008R2从日志中恢复Delete数据

【用户单位】     北京某公司  【数据恢复故障描述】     用户有两个SQLSERVER 2008R2数据库,其中一个是测试库,另一个是生产库,DBA在做操作,误把生产库中的一张表做了Delet...
  • mycshomes
  • mycshomes
  • 2014年03月28日 21:45
  • 1824

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327问题:         经常看到有人误删数据,或者误操作,特别是update和...
  • DBA_Huangzj
  • DBA_Huangzj
  • 2013年01月10日 20:48
  • 96904

SQL SERVER三种恢复模型

在SQL Server中,除了系统数据库外,你创建的每一个数据库都有三种可供选择的恢复模型: Simple(简单), full(完整), bulk-logged(批量日志)。 下面这条语句可以显示出所...
  • YABIGNSHI
  • YABIGNSHI
  • 2013年08月27日 23:46
  • 1757

SQLSERVER2012误删数据恢复过程

由于长时间从事企业应用系统开发,前往用户现场升级、调试系统是比较常做的事情,但是就在周一,由于同事的失误在毫无知觉的情况下误删了生产数据库几乎所有的数据。当我发现的那一刻,感觉头发都立起来了,心想这他...
  • xwnxwn
  • xwnxwn
  • 2016年12月09日 13:29
  • 5392

SQL Server 数据恢复

配置SQL Server数据库恢复模式(2种方法) 用T-SQL设置恢复模式 你可以使用“ALTER DATABASE”命令加“SET RECOVERY”语句来修改数据库的恢复模式。例如,下面的查询...
  • u013795673
  • u013795673
  • 2016年07月07日 21:18
  • 1303

SQL Server 2008 误删除数据的恢复

前言     在平时大家用到SQL Server的时候很多,也经常会对其进行各种操作,简单的数据查询或添加还没什么问题,顶多就是添加错误直接删除就可以了,但如果你操作的是重要的数据库,而且库中有着重要...
  • u013034793
  • u013034793
  • 2016年01月12日 15:47
  • 4479

SQL Server 的备份与恢复

备份的三种形式:日志备份,差异备份,全备份
  • wujiandao
  • wujiandao
  • 2016年06月23日 22:19
  • 2410

SQL Server 数据库恢复到某一时间点测试

随着客户数据库数据的逐渐增大,为了保证数据库一旦发生问题,能够很快恢复到时间点,不得不指定相应的备份策略,以下总结一下数据库发生问题时,如何恢复到某一时间点: 第一步:创建数据库以及创建表 ...
  • ren6370
  • ren6370
  • 2017年06月26日 09:06
  • 1200
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Server灾难恢复(转帖)
举报原因:
原因补充:

(最多只允许输入30个字)