导读:
  /*--重置置疑状态
  1.系统方法:
  如果 sql server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,
  那么 microsoft® sql server™ 2000 会返回错误 1105
  并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题:
  执行 sp_resetstatus。
  语法为:
  sp_resetstatus '数据库名'
  用 alter database 向数据库添加一个数据文件或日志文件。
  停止并重新启动 sql server。
  用新的数据文件或日志文件所提供的额外空间,sql server 应该能完成数据库的恢复。
  释放磁盘空间并且重新运行恢复操作。
  sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。
  --*/
  --2.手工重置置疑状态
  use master
  go
  sp_configure 'allow updates',1 reconfigure with override
  go
  declare @dbname varchar(30)
  set @dbname='你要处理的数据库名'
  if @@trancount >0
  print '正在进行事务处理,操作不能进行'
  else if suser_id()!=1
  print '你不是系统管理员(sa),不能进行此操作'
  else if not exists(select 1 from master..sysdatabases where name=@dbname)
  print '你要操作的数据库不存在'
  else if not exists(select 1 from master..sysdatabases where name= @dbname and status &256 = 256)
  print '你的数据库没有被置疑'
  else
  begin
  begin tran
  update master..sysdatabases set status = status ^ 256 where name = @dbname
  if @@error != 0 or @@rowcount != 1
  rollback tran
  else
  begin
  commit tran
  print '操作成功,请重新启动SQL'
  end
  end
  go
  sp_configure 'allow updates', 1 reconfigure with override
  go
  --------------------------
  如果上面的方法不能解决问题.
  就有点麻烦,首先分离你的数据库,备份数据文件
  如果不能分离,则停止SQL服务,再备份数据文件,然后启动SQL服务,删除置疑的数据库
  接下来按下面的步骤处理:
  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
  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=42006

还有一种方法:

随便记录---------

A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL   Server   Enterprise   Manager里面建立。  
  B.停掉数据库服务器。  
  C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。  
  D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。  
  E.设置数据库允许直接操作系统表。此操作可以在SQL   Server   Enterprise   Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。  
  use   master  
  go  
  sp_configure   'allow updates',1  
  go    
  reconfigure   with   override  
  go  
  F.设置test为紧急修复模式  
  update   sysdatabases   set   status=-32768   where   dbid=DB_ID('test')  
  此时可以在SQL   Server   Enterprise   Manager里面看到该数据库处于“只读/置疑/脱机/紧急模式”可以看到数据库里面的表,但是仅仅有系统表  
  G.下面执行真正的恢复操作,重建数据库日志文件  
  dbcc   rebuild_log('test','C:/Program   Files/Microsoft   SQL   Server/MSSQL/Data/test_log.ldf')  
  执行过程中,如果遇到下列提示信息:  
  服务器:   消息   5030,级别   16,状态   1,行   1  
  未能排它地锁定数据库以执行该操作。  
  DBCC   执行完毕。如果   DBCC   输出了错误信息,请与系统管理员联系。  
  说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL   Server   Enterprise   Manager打开了test库的系统表,那么退出SQL   Server   Enterprise   Manager就可以了。  
  正确执行完成的提示应该类似于:  
  警告:   数据库   'test'   的日志已重建。已失去事务的一致性。应运行   DBCC   CHECKDB   以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。  
  DBCC   执行完毕。如果   DBCC   输出了错误信息,请与系统管理员联系。  
  此时打开在SQL   Server   Enterprise   Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。  
  H.验证数据库一致性(可省略)  
  dbcc   checkdb('test')  
  一般执行结果如下:  
  CHECKDB   发现了   0   个分配错误和   0   个一致性错误(在数据库   'test'   中)。  
  DBCC   执行完毕。如果   DBCC   输出了错误信息,请与系统管理员联系。  
  I.设置数据库为正常状态  
  sp_dboption   'test','dbo use only','false'  
  如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。  
  J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL   Server   Enterprise   Manager里面恢复,也可以使用如下语句完成  
  sp_configure   'allow updates',0  
  go    
  reconfigure   with   override  
  go

SqlServer数据库置疑的解决办法相关推荐

  1. 转贴 :sql数据库置疑:Sql Server数据库置疑的解决

    sql数据库置疑:Sql Server数据库置疑的解决 办法 原因: 通常这个问题是由于硬盘空间不够或硬盘读写错误造成的. 现象: 数据库后面有"置疑"字样,查看系统事务日记出现以 ...

  2. restore还原不同名称的数据库_Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法...

    一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server 数据库最小宕机迁移方案,里面使用SQL脚本(T-SQL)完成完全备份.差异 ...

  3. ORA-01109:数据库未打开 解决办法

    ORA-01109:数据库未打开 解决办法 直接上办法 先来张操作截图 具体操作步骤 问题解读 直接上办法 先来张操作截图 具体操作步骤 1.打开sqlplus.exe 2.请输入用户名: 用户名 a ...

  4. DreamMail无法打开邮件数据库问题的解决办法

    DreamMail无法打开邮件数据库问题的解决办法 (http://blog.csdn.net/kingspider/) DreamMail(http://www.dreammail.org/)是一个 ...

  5. mysql附加数据库出错_Sqlserver2005附加数据库时出错解决办法

    一篇关于Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 ,有碰过相同问题的朋友可以参考本文章得以解决哦. 最近几天从网上找了几个.net的登录案例想要研 ...

  6. mysql远程无法登陆_无法远程登陆MySQL数据库几种解决办法

    无法远程登入MySQL数据库的解决办法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13. ...

  7. win10远程桌面连接报错(出现身份验证错误。要求的函数不受支持。CredSSP 加密数据库修正)解决办法

    某天使用win10系统进行远程桌面连接时,出现了连接失败的情况,提示: 出现身份验证错误. 要求的函数不受支持 这可能是由于 CredSSP 加密数据库修正. 多次重试,问题依旧,而以往是可以正常进行 ...

  8. 连接阿里云服务器上MySQL数据库失败的解决办法

    一 数据库配置,MySQL默认是不能远程连接 只需要在/etc/mysql下的my.cnf文件里注释掉bind-address = 127.0.0.1 就可以了,如图: 二 安全组设置 阿里云服务器默 ...

  9. manjaro同步数据库报错解决办法

    开机同步数据库,终端输入命令sudo pacman -Syyu 同步失败,报错如下: :: 正在同步软件包数据库... 错误:无法升级 core (无法锁定数据库) 错误:无法升级 extra (无法 ...

最新文章

  1. java加密解密与数字证书的操作
  2. Javaweb异常提示信息统一处理
  3. 计算机网络第六版 重点,计算机网络第六版重点习题及答案.docx
  4. [一维粒子模拟 version3.6]renormalization
  5. maya中英文切换插件_老司机都在用的30款maya常用插件
  6. 【按位dp】文盲的学习方法
  7. 给指定Python版本安装指定版本库的办法
  8. 感恩节专宠有礼,送3本技术好书
  9. C#中获去一个字符串中的汉字的个数 C#获取字符串全角的个数
  10. Xcode 7.3 解决自定义类无法自动联想
  11. 001.Spark的日志配置
  12. Flutter ListView以及GridView的列表展示与Item点击事件
  13. 软件评测师教程书本对软考的作用有多大?
  14. 74系列芯片功能说明
  15. 项目经理一定要知道的PMP项目管理八大会议流程-(PMBOK高频考点)
  16. 支付宝SOFA架构:降低业务系统复杂度
  17. 设置Chrome浏览器不加载图片的方法
  18. AndroidStudio与Eclipse快捷键
  19. 虚拟机克隆之后的IP修改问题
  20. Debian 国内常用镜像源

热门文章

  1. 初识人脸识别---人脸识别研究报告(概述篇)
  2. 详解|一级建造师考试报名流程有哪些?
  3. Android ListView局部刷新item
  4. 恶意还是粗心?质疑MyIE(版本号2.0.2.2961)的升级程序
  5. 主流webservice框架整理
  6. Ubuntu 20.04安装wps程序步骤,史上最简洁实用
  7. 7位世界著名的制图师及其相关的地图介绍
  8. 对于代码复现学习的一些理解||计算机研究生学习笔记||经验分享||深度学习||pytorch||不定期长期更新
  9. JS获取浏览器可视区域宽高
  10. html仿写京东左侧,jQuery模仿京东/天猫商品左侧分类导航菜单效果