最近去一个客户那,说他们的账套文件备份后(用金蝶账套管理)还原不上,老提示一个数据库文件被使用
我打开数据库后一看属性,这个数据库有两个MDF和两个LDF文件,我从来没见过这个问题
多出来的日志文件可以删除掉,可多出来的MDF文件(只有2M大)就怎么也删除不掉了,说是不是空白的。
我试着用导出把里边的数据想导到一个新建的数据库里,结果导到22%就没反应了。
哪位老大帮帮忙看我这要怎么办才能把它转成一组文件

解决方案 »

  1.   

    文件组的扩展名是.ndf的吧!
    楼主使用强制还原可以不?
      

  2.   

    我试过以下方法
    1.把数据库备份后,删除原数据库后,重新强制恢复,还是恢复成四个文件了
    2.把数据库分离后,删除掉多余的两个文件,附加数据库时出错。
    3.到数据属性里,删除多余的文件,结果只有日志文件那个能被删除(而且只成功一个,我再试的时候删除的掉可恢复不了说是少了一个文件),数据那个就删不掉。也就是说,现在我的这个数据库有三个文件,两个MDF和一个LDF咋办!
      

  3.   

    好象是文件组的问题吧.多个mdf文件是正常的.试着先分离数据库,然后附加.
      

  4.   

    是文件组的问题,这个数据库PRIMARY文件组后的文件是2和别的不一样,分离我也试过了恢复时还是四个文件,删除掉多余的两个就根本附加不上了
      

  5.   

    kenny_appleso() 
    我试了,恢复回来还是四个
      

  6.   

    如果 多出的那个MDF是空的就好了,我在这里试的时候如果是空白的一删就删掉了,可是客户那的不知道为什么就不是空白的
      

  7.   

    应该是重复安装SQL,所以系统中有多个SQL SERVER实例。每个实例都有你说的数据库。
      

  8.   

    将所有的数据导出到另一个数据库,然后清空原来数据库的数据,删除其中的一个MDF文件,然后再把数据导回来
      

  9.   

    --以下代码简单地演示了如何进行文件组的备份及还原(在还原时,模拟了丢失第二次文件组备份文件的情况)。
    --创建测试数据库
    CREATE DATABASE db
    ON PRIMARY(
    NAME='db_data',
    FILENAME= 'c:\db_data.mdf'),
    FILEGROUP db_fg1(
    NAME = 'db_fg1_data',
    FILENAME = 'c:\db_fg1_data.ndf'),
    FILEGROUP db_fg2(
    NAME = 'db_fg2_data',
    FILENAME = 'c:\db_fg2_data.ndf')
    LOG ON(
    NAME='db_log',
    FILENAME ='c:\db.ldf')
    GO--在文件组db_fg1上创建表,并单独创建该文件组的备份
    CREATE TABLE db.dbo.tb(id int) ON db_fg1
    BACKUP DATABASE db FILEGROUP='db_fg1' TO DISK='c:\db_fg1.bak' WITH FORMAT
    GO在其他文件组上创建表 
    CREATE TABLE db.dbo.ta(id int) ON [PRIMARY]
    CREATE TABLE db.dbo.tc(id int) ON db_fg2
    INSERT db.dbo.tb SELECT id FROM sysobjects
    --备份每个文件组,并且备份事务日志
    BACKUP DATABASE db FILEGROUP='PRIMARY' TO DISK='c:\db_primary.bak' WITH FORMAT
    BACKUP DATABASE db FILEGROUP='db_fg1' TO DISK='c:\db_fg1_new.bak' WITH FORMAT
    BACKUP DATABASE db FILEGROUP='db_fg2' TO DISK='c:\db_fg2.bak' WITH FORMAT
    BACKUP LOG db TO DISK='c:\db_log.bak' WITH FORMAT
    GO--删除数据库
    DROP DATABASE db
    GO--从文件组备份中恢复数据
    RESTORE DATABASE db FILEGROUP='PRIMARY' FROM DISK='c:\db_primary.bak' WITH NORECOVERY,REPLACE
    RESTORE DATABASE db FILEGROUP='db_fg1' FROM DISK='c:\db_fg1.bak' WITH NORECOVERY
    RESTORE DATABASE db FILEGROUP='db_fg2' FROM DISK='c:\db_fg2.bak' WITH NORECOVERY
    RESTORE LOG db FROM DISK='c:\db_log.bak' WITH RECOVERY
    SELECT COUNT(*) FROM db.dbo.tb
    GO--删除测试数据库
    DROP DATABASE db
      

  10.   

    两个mdf确实没有遇到过
    ========================
    应该是重复安装SQL,所以系统中有多个SQL SERVER实例。每个实例都有你说的数据库
    ========================
    这样的话,不应该恢复一个数据库的时候还有两个MDF文件吧?要是NDF还是可能
      

  11.   

    好象是文件分组吧,只是命名不大规范而已,正常其中一个文件应该是ndf的啊!