SQL Server 置疑、可疑、正在恢复等情况分析

 更新时间:2011年12月19日 21:38:02   作者:  
有些时候当你重启了数据库服务,会发现有些数据库变成了正在恢复、置疑、可疑等情况,这个时候DBA就会很紧张了,下面是一些在实践中得到证明的方法
一、出错情况
有些时候当你重启了数据库服务,会发现有些数据库变成了正在恢复、置疑、可疑等情况,这个时候DBA就会很紧张了,下面是一些在实践中得到证明的方法。
在一次重启数据库服务后,数据库显示正在恢复,过了很久还是这个状态,离线时间不能太长,所以就想起了一个方法,就是把数据库服务停止了,把数据文件mdf和ldf拷贝出来,删除了ldf文件,按照之前的经验,好像是在没有ldf的情况下可以使用mdf来恢复数据库。创建了一个同名的数据库,停止数据库服务,覆盖mdf文件,再启动数据库服务,这个时候还是处于可疑的状态。
其中使用mdf来附加数据库是附加不了的,一直报错。

二、解决步骤

方法一:使用脚本进行数据库恢复。
复制代码 代码如下:

--DataBaseName为修复的数据名
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
ALTER DATABASE [DataBaseName] SET EMERGENCY
GO
sp_dboption 'DataBaseName', 'single user', 'true'
GO
DBCC CHECKDB('DataBaseName','REPAIR_ALLOW_DATA_LOSS')
GO
ALTER DATABASE [DataBaseName] SET ONLINE
GO
sp_configure 'allow updates', 0 reconfigure with override
GO
sp_dboption 'DataBaseName', 'single user', 'false'
GO

SQL讲解:
1) 使用指定值强制重新配置:(1、0表示为真假)
sp_configure 'allow updates', 1 reconfigure with override
2) 设置为紧急状态:
alter database DataBaseName set emergency
3) 设置为单用户模式:
alter database [DataBaseName] set single_user
或者:Sp_dboption 'DataBaseName', 'single user', 'true'
4) 修复发现的错误:
DBCC CHECKDB('DataBaseName','REPAIR_ALLOW_DATA_LOSS')
5) 设置为联机、在线:
ALTER DATABASE [DataBaseName] SET ONLINE

方法二:这个方法还没尝试过,大家可以试试看。

复制代码 代码如下:

CREATE DATABASE DataBaseName
ON (FILENAME = 'D:\DataBase\Name.mdf')
FOR ATTACH_REBUILD_LOG ;
GO
您可能感兴趣的文章:

相关文章

  • SQL Server 2008 R2登录失败的解决方法

    SQL Server 2008 R2登录失败的解决方法

    这篇文章主要为大家详细介绍了SQL Server 2008 R2登录失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 一段脚本实现自动备份并保存最近几天的SQL数据库

    一段脚本实现自动备份并保存最近几天的SQL数据库

    这篇文章主要介绍了如何自动备份并保存最近几天的SQL数据库,需要的朋友可以参考下
    2014-03-03
  • SQL Server 2022 AlwaysOn新特性之包含可用性组详解

    SQL Server 2022 AlwaysOn新特性之包含可用性组详解

    这篇文章主要介绍了SQL Server 2022 AlwaysOn新特性之包含可用性组介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 自增长键列统计信息的处理方法

    自增长键列统计信息的处理方法

    在这篇文章展示了SQL Server的查询优化器如何使用自增长键列统计信息,大家都知道SQLServer里每个统计信息对象都有关联的直方图直方图用多个步长描述指定列数据分布情况,需要的朋友可以参考下
    2015-07-07
  • SQL Server 数据库分区分表(水平分表)详细步骤

    SQL Server 数据库分区分表(水平分表)详细步骤

    最近几个担心网站数据量大会影响sqlserver数据库的性能,所以提前将数据库分表处理好,下面是ExceptionalBoy同学分享的详细方法,需要的朋友可以参考下
    2021-03-03
  • 详解SQL 通配符

    详解SQL 通配符

    这篇文章主要介绍了SQL 通配符的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • SQL Server解决游标性能问题的替代方案

    SQL Server解决游标性能问题的替代方案

    游标是一种能从包含多个元组的集合中每次读取一个元组的机制,游标总是和一段SELECT语句关联,SELECT语句查询出的结果集就作为集合,游标能每次从该集合中读取出一个元组进行不同操作,但在某些情况下,它们可能会导致性能问题,本介绍了SQL Server解决游标性能问题的替代方案
    2024-12-12
  • sql 百万级数据库优化方案分享

    sql 百万级数据库优化方案分享

    这篇文章介绍了sql 百万级数据库优化方案,有需要的朋友可以参考一下
    2013-10-10
  • sqlserver建立新用户及关联数据库教程

    sqlserver建立新用户及关联数据库教程

    本文讲的是SQLserver数据库创建新用户方法以及赋予此用户特定权限的方法,非常的简单实用,有需要的小伙伴可以参考下
    2018-01-01
  • SQL 查询连续登录的用户情况

    SQL 查询连续登录的用户情况

    这篇文章主要介绍了SQL 查询连续n天登录的用户情况,本文以3天为例,通过使用mysql工具sql语句给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论