来自百度

1、停止数据库服务器,将数据库MDF文件和LDF文件复制备份一份
2、启动数据库服务器,删除置疑的数据库
3、仅用备份的数据库MDF文件附加数据库,sp_attach_db或者sp_attach_single_file_db可以附加数据库,出现类似下面的提示信息:
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\myDb_Log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\myDb_log.LDF' 的新日志文件。
这个表明数据库附加成功,问题解决了,如果成功则要恭喜你了,反正我是符加不成功,提示类似下面的错误信息
未能打开新数据库 'myDb'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'e:\www\myDb_log.LDF' 可能有误。
此时我用了以下方法解决(参考了网上的方法)。
   A.我们SQL SERVER企业管理器新建立一个供恢复使用的同名数据库(注意:要跟问题数据库同名,本例中为fy_erp)。
   B.停掉数据库服务器。
   C.将刚才生成的数据库的日志文件fy_erp_log.ldf删除(本例中的示列数据库名,实际使用您自己的数据库名称),用刚才备份的数据库fy_erp文件覆盖新生成的数据库数据文件fyerp_data.mdf。
   D.启动数据库服务器。此时会看到数据库fy_erp的状态为“置疑”。这时候不能对此数据库进行任何操作。
   E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右--键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。

use master
go
sp_configure 'allow updates',1
go 
reconfigure with override
go

F.设置myDb为紧急修复模式
      在查询管理器里设置如下命令:

update sysdatabases set status=-32768 where dbid=DB_ID('fy_erp')

此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
   G.下面执行真正的恢复操作,重建数据库日志文件

dbcc rebuild_log('fy_erp','d:\Microsoft SQL Server\MSSQL\Data\fy_erp_log.ldf')

警告: 数据库 'myDb' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
   H.验证数据库一致性(可省略)

dbcc checkdb('fy_erp')

一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'myDb' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
   I.设置数据库为正常状态

sp_dboption 'fy_erp','dbo use only','false'

J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成

sp_configure 'allow updates',0
go 
reconfigure with override
go

到此数据库置疑问题解决。

所有语句

  --E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,
--按右--键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go 
reconfigure with override
go
  -- F.设置myDb为紧急修复模式
  --    在查询管理器里设置如下命令:
update sysdatabases set status=-32768 where dbid=DB_ID('fy_erp')
--此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
   --G.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log('fy_erp','d:\Microsoft SQL Server\MSSQL\Data\fy_erp_log.ldf')
--警告: 数据库 'myDb' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
--DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
--此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
   --H.验证数据库一致性(可省略)
dbcc checkdb('fy_erp')
--一般执行结果如下:
--CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'myDb' 中)。
--DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
   --I.设置数据库为正常状态
sp_dboption 'fy_erp','dbo use only','false'
  -- J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。
--当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go 
reconfigure with override
go

由于服务器意外的断电,导致SQL SERVER服务器上数据库出现“置疑”而无法使用,的更多相关文章

  1. 服务器重启可能会导致SQL Server中部分数据库变为single user mode

    今天检查公司生产服务器的SQL Server数据库,惊讶的发现有三个生产数据库变为了single user mode.奇怪的是没有任何人和程序执行过SQL语句将这三个数据库设置为single user ...

  2. SQL Server服务器名称与默认实例名不一致的修复方法

    SQL Server服务器名称与默认实例名不一致的修复方法 分类: 个人累积 SQl SERVER 数据库复制2011-08-10 09:49 10157人阅读 评论(0) 收藏 举报 sql ser ...

  3. Sql Server 服务器名称\实例名称 无法连接 Server Name\Instance Name

      解决步骤: 1:  Sql Server是否已经启动. 2:  检查Sql Server服务器是否开启TCP/IP协议. 侦听的默认端口为1433          3:     ping 数据库 ...

  4. SQL Server数据库账号密码变更后导致vCenter Server无法访问数据库

    SQL Server数据库账号密码变更后导致vCenter Server无法访问数据库 1.1状况描述: 若SQL Server数据库的账号(这里以sa为例)密码发生了变更,那么连接数据的客户端vCe ...

  5. 10款最佳SQL Server服务器监控工具

    转自:http://server.51cto.com/sSecurity-587355.htm 推荐 | 10款最佳SQL Server服务器监控工具 服务器是网络中最重要的资源之一,SQL Serv ...

  6. Windows分页文件设置不当导致SQL Server服务被终止

    Windows分页文件设置不当导致SQL Server服务被终止 文章说明 在正式开始验证和测试之前,先介绍Windows分页文件和SQL Server的动态内存管理.下面测试将分为两种测试场景:场景 ...

  7. 在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容

    一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...

  8. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

  9. SQL Server 服务器磁盘测试之SQLIO篇

    原文:SQL Server 服务器磁盘测试之SQLIO篇 数据库调优工作中,有一部分是需要排查IO问题的,例如IO的速度或者RAID级别无法响应高并发下的快速请求.最常见的就是查看磁盘每次读写的响应速 ...

随机推荐

  1. GJM : Unity3D HIAR -【 快速入门 】 三、导入 SDK

    导入 SDK 本文将向您介绍如何在 Unity 工程中导入 HiAR SDK for Unity.在开始之前,请先访问 HiAR 官网下载最新版本的 SDK. 下载 HiAR SDK for Unit ...

  2. Google C++单元测试框架GoogleTest---AdvancedGuide(译文)下

    因为AdvancedGuide文档太长,分上下两部分,本文档接googletest--AdvancedGuide(译文)上:Google C++单元测试框架GoogleTest---AdvancedG ...

  3. listview侧滑删除

    自定义Listview,向左滑动,右边刚好显示删除按钮: public class SlideListView extends ListView { private int mScreenWidth; ...

  4. pc端与移动端的区别

    移动设备和PC本身有区别: 1.屏幕尺寸不同,屏幕大小导致显示的内容页不一样. 2.网络速度不同:手机分2G.3G.4G.WIFI等,我们要少用图片,JS.动画等等,用户打不开一样起不了作用. 3.使 ...

  5. AngularJS 模块& 表单

    模块定义了一个应用程序. 模块是应用程序中不同部分的容器. 模块是应用控制器的容器. 控制器通常属于一个模块. 应用("myApp") 带有控制器 ("myCtrl&qu ...

  6. ThinkPHP实现定时任务

    项目服务端框架我选用的是ThinkPHP,由于策划案中有需求要定时刷新指定数据,所以在windows平台我使用微软的计划任务调用bat脚本来执行下面的命令来完成 php index.php /Home ...

  7. xcache的使用与配置

    一.安装Xcache # wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz # tar zxvf xcach ...

  8. Android学习--自己在使用HttpConnection时遇到的EOFException

    在学习第一行代码第14章酷欧天气的时候,HttpUtil类中的sendHttpRequest方法发出请求,然后返回响应信息,但是出现了EOFException异常,代码如下: HttpURLConne ...

  9. Linux下面安装MySQL

  10. java 后台开发关键词解释

    bean类:是一些实体类,包括viewbean,databean等等.action类:可作为接收显示层的数据,连接显示层和业务逻辑实现层的控制层.model类:MVC中model层就是到层.在java ...