阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

手机号码,快捷登录

老司机
12
返回列表 发新帖
楼主: cindy4911

[原创] 速达帐套MDF文件损坏 求助解决

[复制链接]
  • TA的每日心情
    开心
    2013-3-24 22:59
  • 签到天数: 137 天

    [LV.7]常住居民III

    发表于 2010-2-5 19:37:01 | 显示全部楼层
    使用sql server时,如果需要拷贝数据库到其它电脑,或者备份,一般情况下有以下几种可能:
    1。备份/恢复数据库的方法。
    2。分离/附加数据库的方法。
    3。停止数据库服务,然后拷贝数据库文件。
    一般情况下,备份时,建议使用第一种方法。拷贝文件到其它电脑时,建议使用第二种方法。
    任何时候,尽量不要使用第三种方法。估计楼主的情况就是使用第三种方法导致的(使用第三种方法出错这种错误的几率大概是1%)。

    出现上诉问题时,一般会有以下的错误提示:
      未能打开新数据库 'test'。CREATE DATABASE 将终止。
      设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
    解决方法:
    可以按照以下的方法进行恢复。(步骤有点多,不过的确有效。)
    第1步.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
    第2步.停掉数据库服务器。
    第3步.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
    第4步.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
    第5步.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
    use master
    go
    sp_configure 'allow updates',1
    go
    reconfigure with override
    go
    第6步.设置test为紧急修复模式
    update sysdatabases set status=-32768 where dbid=DB_ID('test')
    此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读置疑脱机紧急模式”可以看到数据库里面的表,但是仅仅有系统表
    第7步.下面执行真正的恢复操作,重建数据库日志文件
    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使用”。此时可以访问数据库里面的用户表了。
    第8步.验证数据库一致性(可省略)
    dbcc checkdb('test')
    一般执行结果如下:
    CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
    第9步.设置数据库为正常状态
    sp_dboption 'test','dbo use only','false'
    如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
    第10步.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
    sp_configure 'allow updates',0
    go
    reconfigure with override
    go

    [ 本帖最后由 heungel 于 2010-2-5 19:38 编辑 ]
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2023-10-3 22:52
  • 签到天数: 842 天

    [LV.10]以坛为家III

    发表于 2010-3-31 20:49:05 | 显示全部楼层
    上楼真够专业的了,不知楼主是否搞定?如何搞定的,说明一下,对别人也是一个启示呀!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情

    2024-6-21 15:42
  • 签到天数: 1012 天

    [LV.10]以坛为家III

    发表于 2010-3-31 21:45:54 | 显示全部楼层
    只要不是数据库文件损坏,一般可以用11楼的方法解决
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2014-5-21 20:26
  • 签到天数: 245 天

    [LV.8]以坛为家I

    发表于 2010-3-31 21:54:40 | 显示全部楼层
    11楼好专业.
    觉得完整的备份才是最重要的
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2014-4-10 10:28
  • 签到天数: 38 天

    [LV.5]常住居民I

    发表于 2010-4-1 08:34:41 | 显示全部楼层
    http://bbs.sunwy.org/thread-80105-1-1.html
    用我这个软件吧, 开机自动压缩备份, 不用担心数据库损坏问题。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    2022-10-20 11:44
  • 签到天数: 164 天

    [LV.7]常住居民III

    发表于 2010-4-2 14:42:36 | 显示全部楼层
    有希望修复的。可以联系我,QQ:744952589
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    郁闷
    2020-9-17 23:51
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2010-7-18 13:55:39 | 显示全部楼层
    使用sql server时,如果需要拷贝数据库到其它电脑,或者备份,一般情况下有以下几种可能:
    1。备份/恢复数 ...
    heungel 发表于 2010-2-5 19:37

    如果是速达软件出错。用上面的方法就行。。。。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    擦汗
    2016-9-20 23:57
  • 签到天数: 67 天

    [LV.6]常住居民II

    发表于 2010-7-21 11:13:12 | 显示全部楼层
    数据库文件有问题,修复成功的可能性很小。自己找找软件或工具试试吧。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2016-12-8 22:12
  • 签到天数: 107 天

    [LV.6]常住居民II

    发表于 2010-7-30 20:48:12 | 显示全部楼层
    回复 11# heungel


        谢谢楼主分享这对我们很有帮助,我发现速达软件的帐套很容易损坏一年都要恢复好几次如果没备份的话那真是太惨了。
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表