mssql2005 文件组一文件组为脱机状态且文件丢失怎么删除? RT,有一表[20101213]属于文件组20101213,文件20101213.ndf。由于ndf文件已经丢失,现在我在还原主文件组的备份文件后,怎么也删除不掉表20101213和文件组20101213,提示‘无法删除表20101213,因为表中至少有一部分内容处于离线文件中’。 请大侠赐教。 ps:我没分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果只是要删除表到sysobjects 目录下删除20101213行 LZ 参考下 DBCC CHECKTABLE通过其中的参数 REPAIR_ALLOW_DATA_LOSS 来处理离线的问题。然后再删除对应的表。看可否! 看来数据库的结构被破坏了,处理是比较麻烦.干脆一点好了,建个临时库-->数据导出/导入迁移进临时库-->卸离原库-->卸离临时库-->附件临时库,库名修改为原库的. 你是说删除sysobjects表中的20101213的行记录?行不通呀,提示‘不允许对系统目录进行即席更新。’ 情况如下:1、备份主文件组primary成xxx.bak2、还原主文件组 restore database mydb filegroup='primary' from disk='xxx.bak' with replace,recovery 还原后奇怪的不属于primary文件组和表还存在,但它的文件不存在,无法删除。 让表名看不见?那么object_id('20101213')是否为空?如果是也算暂时解决了我的问题 用以下脚本建的方法,提示还原未完成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 testdbcreate table tb (id int )on secondbackup database testdbfilegroup='primary'to disk='c:\t1.bak' with init/*开始测试*/--关闭sqlserver删除t2.ndfuse 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'reconfigureEXEC sp_configure 'allow updates', '1'RECONFIGURE WITH OVERRIDE 多谢热情答复,我用的也是SQL2005。在用restore要前先备份日志尾部 不是。我在任务计划里只备份primary文件组。backup database [myDB] filegroup='primary' to disk='xxx.bak' with format 为什么删除掉myDB,再用restore还原主文件组的备份文件后仍然存在20101213文件组和表?? 因为系统对象和系统表都存放在primary文件组里。所以尽管次要文件组不存在,但仍能看到该文件组中对象的名称和结构。楼主,对于你的问题,microsoft官方的回答是先建一个新数据库,再将primary文件组中的数据导入。最后drop掉原数据库。 悲剧的是这个表存在影响了使用,如果有办法能使object_id('20101213') is null 就好 消除重複行 求救方法 关于rollup汇总结果排序的问题…… 100分求SQL优化算法! 请教一个SQL语句,在线等待!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! sql 2000服务器上第二个实例的问题 SQL Server连接服务器出错 SQL里面有没有一种字段类型可以象ACCESS里面的备注一样,可以长可以短? SQL SERVER的一个问题 怎样处理update不成功的异常 请问高手sqlserver使用参数化查询可以降低内存的使用吗? SQL Server差异备份问题
到sysobjects 目录下删除20101213行
干脆一点好了,
建个临时库-->数据导出/导入迁移进临时库-->卸离原库
-->卸离临时库-->附件临时库,库名修改为原库的.
你是说删除sysobjects表中的20101213的行记录?行不通呀,提示‘不允许对系统目录进行即席更新。’
1、备份主文件组primary成xxx.bak
2、还原主文件组
restore database mydb filegroup='primary' from disk='xxx.bak' with replace,recovery 还原后奇怪的不属于primary文件组和表还存在,但它的文件不存在,无法删除。
让表名看不见?那么object_id('20101213')是否为空?如果是也算暂时解决了我的问题
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
多谢热情答复,我用的也是SQL2005。
在用restore要前先备份日志尾部
backup database [myDB] filegroup='primary' to disk='xxx.bak' with format
因为系统对象和系统表都存放在primary文件组里。所以尽管次要文件组不存在,但仍能看到该文件组中对象的名称和结构。楼主,对于你的问题,microsoft官方的回答是先建一个新数据库,再将primary文件组中的数据导入。最后drop掉原数据库。