发布网友 发布时间:2022-04-25 23:46
共2个回答
热心网友 时间:2022-05-03 22:57
即使没有NDF也是可以成功附加的。但是有条件,丢失的NDF文件不属于Primary file group并且SQL Server为企业版
测试:
--1. 创建数据库--2.在primary file group上创建两张表
create tabletest(namevarchar(10)) ON[PRIMARY]
create tabletest2(namevarchar(10)) ON[PRIMARY]
--在NDF上面创建一张表
create tabletest1(namevarchar(10))onnew
--3.插入10条数据
insert intotestvalues ('kevin')
go 10
insert intotest1values ('kevin')
go 10
insert intotest2values ('kevin')
go 10
--4.Detach数据库
USE[master]
GO
EXEC master.dbo.sp_detach_db@dbname=N'test1'
GO
5. 将MDF,NDF,LDF文件复制到其他文件夹
6. 按照第一步的脚步创建一个同名的数据库
--将数据库Offline7. 将第5步备份的MDF和LDF文件覆盖现在的数据库MDF和LDF
8. 将出问题的NDF文件Offline
alter databasetest1modify FILE (name=new ,offline)9. 将数据库Online
alter databasetest1set online但是访问test1表的时候会出现下面的错误:
Msg 8653,Level 16, State 1, Line 1
The queryprocessor is unable to proce a plan for the table or view 'test1' because thetable resides in a filegroup which is not online.
因为表所在的Filegroup是离线的,所以无法访问。