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

只有mdf文件的数据库附加失败的修复
附加时报如下错误:
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 "d:\data\test_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:\Data\test_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

(0)

相关推荐

  • sqlserver只有MDF文件恢复数据库的方法

    在查询中执行下列语句 EXEC sp_attach_single_file_db @dbname = 'tggov_Data', @physname = 'E:\tggov_Data\www.jb51.net.MDF' 'tggov_Data' 为恢复的数据库名 'E:\tggov_Data\tggov_Data.MDF' 物理文件位置

  • SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法

    复制代码 代码如下: exec sp_attach_db exun,'d:\exun2.mdf' 一句话就可以了. 网上看了那些比较繁琐的,都是sql server 2000版本的. (可能执行一次不能成功,测试了下,有时候需要执行2次以上命令才行) 执行了之后,记得刷新数据库,不然是不会显示的

  • 恢复.mdf 数据库步骤

    方法一(只有mdf没有日志文件的可以恢复) 证明有效 1.新建同名数据库. 2.把该数据库设置为脱机. 3.删除其日志文件(.LDF),不删除后边的过程执行通不过. 4.在在查询分析器中以超级用户登入,执行以下存储过程,必须以超级用户登入,这是系统级存存处过程. EXEC sp_detach_db @dbname = 'xxx' //@dbnam 为要还原的数据库 EXEC sp_attach_single_file_db @dbname = 'xxx', @physname = 'yyyy'

  • mssql server .ldf和.mdf的文件附加数据库的sql语句

    附加数据库就可以完成. 附加数据库: 企业管理器      --右键"数据库"      --所有任务      --附加数据库      --选择你的.mdf文件名      --确定      --如果提示没有.ldf文件,是否创建,选择"是" 查询分析器中的方法:      --有数据文件及日志文件的情况      sp_attach_db   '数据库名'      ,'数据文件名(*.mdf注意要带目录)'   --后面可以是用,分隔的该数据库的多个数据文

  • 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的状态为"置疑".

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

    只有mdf文件的数据库附加失败的修复 附加时报如下错误: 服务器: 消息 1813,级别 16,状态 2,行 1 未能打开新数据库 'test'.CREATE DATABASE 将终止. 设备激活错误.物理文件名 "d:\data\test_log.LDF' 可能有误. 步骤: A.用"企业管理器"新建一个同名的数据.可以修改默认路径,为表述方便,我使用D:\data\,数据文件名test.mdf,日志文件名test_log.ldf B.停止SQL服务 C.删除test_lo

  • SQL Server数据库附加失败的解决办法

    本文为大家分享了SQL Server数据库附加失败的具体解决方法,供大家参考,具体内容如下 1.错误3415 问题:附加数据库的时候,发现总是附加失败,查看消息时发现问题如下: 查看消息后发现错误代码为3415 原因:数据库文件是只读的 解决方法:在文件属性中去掉只读属性 2.错误5120 问题:解决完错误3415后,附加数据库还是出现错误,查看消息时发现问题如下: 查看消息后发现错误代码为5120 解决方法1(尝试):把数据库登陆方式改为Windows身份认证,然后再试一下: 解决方法2:查看

  • SQL恢复master数据库方法 只有mdf文件的数据库如何恢复

    首先先和大家讲一讲SQL Server恢复master数据库方法,具体步骤如下 第一步:复制model.mdf.mastlog.ldf.model.mdf.modellog.ldf.msdbdata.mdf.msdblog.ldf文件. 从X:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\Templates 至X:\Program Files\Microsoft SQL Server\MSSQL10.MSSQ

  • django数据库migrate失败的解决方法解析

    Django是一个MVC架构的web框架,其中,数据库就是"Module".使用这种框架,我们不必写一条SQL语句,就可以完成对数据库的所有操作.在之前的Django版本中,我们像操作本地对象那样操作数据对象,在更改保存之后,执行python manage.py syncdb命令来同步数据库,在我使用的1.9.2版本中,需要依次执行一下步骤: python manage.py makemigrations (这个命令会根据你对数据库做出的更改生成操作数据库的python脚本) pyth

  • C# 以MDF文件链接数据库的示例代码

    一直以来都是链接SQL Server数据库服务但是在部署时将很麻烦,所以突发奇想,直接连接到MDF文件,刚开始还很混乱不会连接,后来向导,连接MDF文件不就和连接ACCDB数据库一样吗? 方法如下:如下为连接字符串" Data Source=(LocalDB)\v11.0;AttachDbFilename="F:\数据库 - 副本.mdf";Integrated Security=True;Connect Timeout=30" 注意:要链接的MDF文件不可以在使用

  • mssql server 数据库附加不上解决办法分享

    错误15105,从网上找了一些解决方案,一般都是说文件的权限不足的问题, 当然附加的时候必须是有数据库附加权限才可以操作的. 解决办法1:给相应的MDF文件给Full Control的权限,如果不知道是什么用户可以去Sql Server的配置中心去找 但是我遇到这个用上述方法就不可以. 解决方法2:换个用户试试,我原数据库是用sa登陆的,我试着用sa登陆一下,附加成功了!~ 如果反复的用sa登陆却登陆失败,可能是没有开权限. 权限可以在登陆用户的选项中设置,允许登陆即可. 验证模式则可以在服务器

  • mysql数据库索引损坏及修复经验分享

    mysql表索引被破坏的问题及解决 下午上班,惊闻我的dedecms的网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为: Table '.\dedecmsv4\dede_archives' is marked as crashed and should be repaired 提示说cms的文章表dede_archives被标记有问题,需要修复.于是赶快恢复历史数据,上网查找原因.最终将问题解决.解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令

  • 还原大备份mysql文件失败的解决方法分享

    用下面方法解决(管理mysql用的是navicat).,设置以下几个参数的值后就正常了,以下语句也可以在mysql的控制台上执行 . 复制代码 代码如下: show variables like '%timeout%'; show variables like '%packet%'; set global max_allowed_packet=99328000; set global wait_timeout=2880000; set global interactive_timeout=288

  • SQL Server2008 数据库误删除数据的恢复方法分享

    SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的数据库完全备份. 2. 数据库的恢复模式(Recovery mode)是"完全(Full)". 针对这两个前提条件,会有三种情况: 情况一.如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无法借助第三方工具. a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NOR

随机推荐