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

一、出错情况
有些时候当你重启了数据库服务,会发现有些数据库变成了正在恢复、置疑、可疑等情况,这个时候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

(0)

相关推荐

  • sqlserver数据库出现置疑的解决思路

    先备份数据库,再用下面的办法: 复制代码 代码如下: USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO ALTER DATABASE Database_Name SET EMERGENCY GO sp_dboption 'Database_Name', 'single user', 'true' GO DBCC CHECKDB('Database_Name','REPAIR_ALLOW_DATA_L

  • SQL Server数据库备份和恢复数据库的全过程

    目录 1. 概述 2. 备份类型 3. 恢复模式 3.1 简单恢复模式 3.2 完全恢复模式和大容量日志恢复模式 4. 备份数据库 5. 恢复数据库 总结 1. 概述 在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨重的: 数据库管理员应针对具体的业务要求指定详细的数据库备份与灾难恢复策略,并通过模拟故障对每种可能的情况进行严格测试,只有这样才能保证数据的高可用性: 数据库的备份是一个长期过程,而恢复只在发生事故后才能进行,恢复后可看做是备份数据库的逆过程,恢复程度的好

  • SQL Server内存遭遇操作系统进程压榨案例分析

    场景: 最近一台DB服务器偶尔出现CPU报警,我的邮件报警阈(请读yù)值设置的是15%,开始时没当回事,以为是有什么统计类的查询,后来越来越频繁. 探索: 我决定来查一下,究竟是什么在作怪,我排查的顺序如下: 1.首先打开Cacti监控,发现最近CPU均值在某天之后骤然上升,并且可以看到System\Processor Queue Length 和 sqlservr\%ProcessorTime 也在显著的变化. 2.从最容易入手的低效SQL开始,考虑是不是最近业务做了什么修改?连接到该SQL

  • 浅谈SQL Server中统计对于查询的影响分析

    而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所谓的统计信息. 如何查看统计信息 查看SQL Server的统计信息非常简单,使用如下指令: DBCC SHOW_STATISTICS('表名','索引名') 所得到的结果如图1所示. 图1.统计信息 统计信息如何影响查询 下面我们通过一个简单的例子来看统计信息是如何影响查询分析器.我建立一个测试表,有两个INT值的列,其中id为自增,ref上建立非聚集索引

  • SQL Server 数据页缓冲区的内存瓶颈分析

    SQL Server会把经常使用到的数据缓存在内存里(就是数据页缓存),用以提高数据访问速度.因为磁盘访问速度远远低于内存,所以减少磁盘访问量同样是数据库优化的重要方面. 当数据页缓存区出现内存不足,则会出现查询慢,磁盘忙等等问题. 分析方法:主要是用到性能计数器. 查看如下性能计数器: 1. SQL SERVER:Buffer Manager-Lazy Writes/sec:内存不足则会频繁调用Lazy Writer把数数据写入磁盘,此值会经常不为0. 2. SQL SERVER:Buffer

  • SQL Server 2005 创建简单的存储过程--总结分析

    最近由于工作需要,简单了解了下SQL Server 2005 数据库创建简单的在存储过程.一.首先说明如何创建存储过程: CREATE PROCEDUER my_pro @inputDate varchar ,//声明输入变量 @Result varchar(255) output //声明输出变量 AS declare @variable1 varchar(255)//声明varchar变量 declare @variable2 int //声明整形变量 BEGIN IF ...(条件) BE

  • Sql Server事务语法及使用方法实例分析

    本文实例讲述了Sql Server事务语法及使用方法.分享给大家供大家参考,具体如下: 事务是关于原子性的.原子性的概念是指可以把一些事情当做一个不可分割的单元来看待.从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合. 为了理解事务的概念,需要能够定义非常明确的边界.事务要有非常明确的开始和结束点.SqlServer中的每一条select.insert.update.delete语句都是隐式事务的一部分.即使只发出一条语句,也会把这条语句当做一个事务-或执行语句的所有内容

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

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

  • SQL Server无法收缩日志文件的原因分析及解决办法

    最近服务器执行收缩日志文件大小的job老是报错 我所用的一个批量收缩日志脚本 USE [master] GO /****** Object: StoredProcedure [dbo].[ShrinkUser_DATABASESLogFile] Script Date: 01/05/2016 09:52:39 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[ShrinkUser_DATABASE

  • MDF文件在SQL Server中的恢复技术

    先把要恢复的文件置于MS SQL里的DATA文件里,进入MS SQL主数据库服务器. 1.我们使用默认方式建立一个供恢复使用的数据库(如MHDYF2005).可以在SQL Server里面建立. 2.停掉数据库服务器. 3.将刚才生成的数据库的日志文件MHDYF2005_log.ldf删除,用要恢复的数据库mdf(yu1.mdf)文件覆盖刚才生成的数据库数据文件MHDYF2005_data.mdf. 4.启动数据库服务器.(刷新之后)此时会看到数据库MHDYF2005的状态为"置疑".

  • SQL Server常用管理命令小结

    1. 查看数据库的版本 select @@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4. 查看数据库启动时间 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看数据库服务器名和实例名 print 'Server Name...............:' + conver

随机推荐