RT,有一表[20101213]属于文件组20101213,文件20101213.ndf。由于ndf文件已经丢失,现在我在还原主文件组的备份文件后,怎么也删除不掉表20101213和文件组20101213,提示‘无法删除表20101213,因为表中至少有一部分内容处于离线文件中’。      请大侠赐教。
      ps:我没分 

解决方案 »

  1.   

    如果只是要删除表
    到sysobjects 目录下删除20101213行
      

  2.   

    LZ 参考下 DBCC CHECKTABLE通过其中的参数 REPAIR_ALLOW_DATA_LOSS 来处理离线的问题。然后再删除对应的表。看可否!
      

  3.   

    看来数据库的结构被破坏了,处理是比较麻烦.
    干脆一点好了,
    建个临时库-->数据导出/导入迁移进临时库-->卸离原库
    -->卸离临时库-->附件临时库,库名修改为原库的.
      

  4.   


    你是说删除sysobjects表中的20101213的行记录?行不通呀,提示‘不允许对系统目录进行即席更新。’
      

  5.   

    情况如下:
    1、备份主文件组primary成xxx.bak
    2、还原主文件组
       restore database mydb filegroup='primary' from disk='xxx.bak' with replace,recovery  还原后奇怪的不属于primary文件组和表还存在,但它的文件不存在,无法删除。
      

  6.   


    让表名看不见?那么object_id('20101213')是否为空?如果是也算暂时解决了我的问题
      

  7.   

    用以下脚本建的方法,提示还原未完成create database testdb 
    on primary 
    (name=t1,
    filename='c:\t1.mdf'),
    filegroup second
    (name=t2,
    filename='c:\t2.ndf')
    log on
    (name=log1,
    filename='c:\tlog.ldf')use testdb
    create table tb (id int )
    on secondbackup database testdb
    filegroup='primary'
    to disk='c:\t1.bak' with init/*开始测试*/
    --关闭sqlserver删除t2.ndf
    use master 
    restore database testdb filegroup='primary' from disk='c:\t1.bak' with replace,recovery 
    前滚开始点现在位于日志序列号(LSN) 19000000017300001 处。需要继续前滚到 LSN 19000000017600001 之前才能完成还原顺序。另外用,允许更改系统表EXEC sp_configure 'show advanced option', '1'
    reconfigure
    EXEC sp_configure 'allow updates', '1'
    RECONFIGURE WITH OVERRIDE
      

  8.   


    多谢热情答复,我用的也是SQL2005。
    在用restore要前先备份日志尾部
      

  9.   

    不是。我在任务计划里只备份primary文件组。
    backup database [myDB] filegroup='primary' to disk='xxx.bak'  with format
      

  10.   

    为什么删除掉myDB,再用restore还原主文件组的备份文件后仍然存在20101213文件组和表??
      

  11.   


    因为系统对象和系统表都存放在primary文件组里。所以尽管次要文件组不存在,但仍能看到该文件组中对象的名称和结构。楼主,对于你的问题,microsoft官方的回答是先建一个新数据库,再将primary文件组中的数据导入。最后drop掉原数据库。
      

  12.   

    悲剧的是这个表存在影响了使用,如果有办法能使object_id('20101213') is null 就好