描述:
数据库总共有3个文件 mdf、ndf、ldf,其中ndf放在C盘,mdf、ldf放在D盘
由于前两天数据库软件坏了,当时不知道 还有ndf这个事,于是 还原系统、重装sql server 。结果附加时才发现这个缺少ndf,数据库软件时 sql server 2008的,已知的有一个 半年前的bak备份文件,可以还原出 一个以前的ndf出来,但是用 这个ndf 去和mdf 匹配的时候 会提示:一个或多个文件不匹配这个问题 整了好几天,求大牛们指教!
sqlserver2008ndf丢失数据恢复ghost格式化附加不成功

解决方案 »

  1.   

    使用以前的备份还是不太好,主要是半年的数据都没了,这样等于没有做任何处理。我听说好像可以用编程 通过ado 连接mdf 直接导出其中的数据来,有没有 编程大神知道这种方法?感激不尽啊~
      

  2.   

    尝试过了,花了280,结果还是找不出来 ndf
      

  3.   

    你创建一个DUMY数据库然后停掉服务,将现在的数据库替换到除NDF之外的数据库,然后启动服务看一下是否可以。
      

  4.   

    如果你的NDF中的所有数据库是FULL模式的话,把旧的备份还原,再靠ldf文件重做数据,理论上是可行的。再无它法。
      

  5.   

    如果楼主想重用旧的NDF中的数据,把备份还原一下。手工导出NDF中数据库的数据即可。
      

  6.   

    如果你的数据库是企业版并且NDF不是在Primary File Group是可以附加的,参考: http://blog.csdn.net/smithliu328/article/details/9816391
      

  7.   


    您好,我想知道这是什么意思?
    现在只是要能确保 mdf文件附加成功就行了,ndf中的数据都可以不要,毕竟损失几天的数据和损失半年的数据比起来还是可以接受的,而通过 还原以前的bak文件,我确实得到了一个ndf文件,但是拿它去和现在的mdf、ldf组合在一起去附加的时候,sql server 报错提示说 一个或多文件未匹配...怎么都附加不上了。另外在网上找了很多方法,其中都是要先用
    sp_configure   'allow   updates',1  
    获取修改系统表的权限,可是该语句已经在sql server 2005版本后就失效了。
      

  8.   

    您好,我装的是sql server 2008 数据中心的版本,ps:序列号在网上找的...请问如何确认 这个ndf 是在primary file group上的呢?
      

  9.   

    您好,我装的是sql server 2008 数据中心的版本,ps:序列号在网上找的...请问如何确认 这个ndf 是在primary file group上的呢?你创建的时候如果没有指定,默认就在primary上
      

  10.   

    您好,我装的是sql server 2008 数据中心的版本,ps:序列号在网上找的...请问如何确认 这个ndf 是在primary file group上的呢?你创建的时候如果没有指定,默认就在primary上
    这个数据库不是我创建的,但当时创建的人好像技术不怎么好,我认为极有可能就在primary file group上。
    估计要悲剧-_-!!请问下 有什么免费的软件能直连mdf导出文件?或者 您知道编程方式通过ado 直连接mdf的方式?
      

  11.   

    您好,我装的是sql server 2008 数据中心的版本,ps:序列号在网上找的...请问如何确认 这个ndf 是在primary file group上的呢?你创建的时候如果没有指定,默认就在primary上
    这个数据库不是我创建的,但当时创建的人好像技术不怎么好,我认为极有可能就在primary file group上。
    估计要悲剧-_-!!请问下 有什么免费的软件能直连mdf导出文件?或者 您知道编程方式通过ado 直连接mdf的方式?
    这个还真不知道,可以问问微软的技术支持。 
      

  12.   

    SORRY,对于MDF,NDF文件的内部结构及系统表如何存储这两个文件,及它们和日志文件之间的关系,研究不是太深。帮不了你了
      

  13.   

    这种情况下,你找到以前备份中的NDF,也不能正常附加的,因为LDF的日志事务已经改变了。