当前位置:  数据库>sqlserver

只有mdf文件的数据库附加失败的修复方法分享(置疑、只读)

    来源: 互联网  发布时间:2014-10-04

    本文导语:  只有mdf文件的数据库附加失败的修复 附加时报如下错误: 服务器: 消息 1813,级别 16,状态 2,行 1 未能打开新数据库 'test'。CREATE DATABASE 将终止。 设备激活错误。物理文件名 "d:datatest_log.LDF' 可能有误。 步骤: A、用“企业管...

只有mdf文件的数据库附加失败的修复
附加时报如下错误:
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 "d:datatest_log.LDF' 可能有误。
步骤:
A、用“企业管理器”新建一个同名的数据。可以修改默认路径,为表述方便,我使用D:data,数据文件名test.mdf,日志文件名test_log.ldf
B、停止SQL服务
C、删除test_log.ldf文件,将新建的test.mdf文件用旧的test.mdf文件替换。
D、启动SQL服务。进入企业管理器后发现test数据显示为“置疑”,此后保证无人连接上此数据库,并不做任何操作。
E、设置test数据库允许直接操作系统表。此操作可以在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')
复制代码执行后在企业管理器中刷新后会发现ttdb数据库显示为“只读置疑脱机紧急模式”。可以看到数据库里面的表,但是仅仅有系统表。
G、重建数据库日志文件。在查询分析器中执行如下语句:
代码如下:

dbcc rebuild_log('test','d:Datatest_log.ldf')

执行之前必须退出企业管理器,并且没有人连接些数据库。否则会报如下错误:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
正常的消息:
警告: 数据库 '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'

走到这一步,如果没有报错,已经可以长长舒一口气了,去喝口水吧。:P
J、最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。怎么做当然不用再多说啦。也可以执行语句:
代码如下:

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

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 没有软驱,没有redhat启动光盘,如何修复grub?只有iso文件
  • 一个Linux/Unix进程,就只有一个"堆"吗?就只有一份crt链接吗?
  • SUN的网站上怎么只有J2SE的API 文档下载,而J2EE的文档怎么只有在线看???
  • 请问只有变量只有extern 形式 但是删去extern 之后 会有 multiple defination error
  • 菜鸟问题:怎样创建一个对所有文件只有只读权限的linux帐号,谢谢!
  • 为什么Home接口为什么只有一个create方法?
  • 只有root才可以读写 RS-232 口吗?普通用户如何对 RS-232 口?
  • javacc 只有一个class文件,怎么用?
  • 使用instanceof出错,我只有7分了
  • 一个小小脚本程序,只有一行,但报错
  • 用户自定义的信号是不是只有SIGUSR1,SIGUSR2
  • Shell中是不是只有“空串”没有NULL?
  • define后只有一个参数的疑问
  • 研究内核开发的方向是不是只有嵌入式??
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 新硬盘安装LINUX启动不了,只有一个“L”
  • JBuilder4中的 JInternalFrame 窗口怎么只有最大化和关闭按钮,怎么没有最小化?
  • 我的Linux引导 程序只有DOS了
  • Unix系统中关于硬盘空间问题?(我的硬盘空间快满了,我应该怎么做?,我的硬盘只有8、4G)
  • 初始化jtable时,我只想生成一个只有表头,即列名,还没有数据行的jtable。该如何实现?
  • Apache的主目录在/var/www/html/,但下面就只有两文件夹,但主目录却可以访问?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3