2010-02-02 166 views
13

我有一个数据库备份,SQL Server Management Studio说它有三个文件:一个.mdf文件,一个.ndf文件和一个.ldf文件。这个辅助数据文件(.ndf之一)的创建原因不明显,所以我希望完全删除它(当然不会丢失数据),最好是在从备份中恢复数据库期间。删除(合并)SQL Server的数据库辅助数据文件

这完全可行吗?

+0

NDF的目的是分发文件IO。如果你的服务器有NDF,不要修改模式。为什么NDF会打扰你? –

+3

@Hassan它是为了克服NTFS卷碎片而创建的,它没有其他存在的原因。尽管我同意NDF是好的,但不小心创建的NDF是邪恶的。 –

回答

14

好的,找到了一个解决方案。

首先备份数据库。

执行此:

USE database_name; 

然后执行此,并与您的NDF文件的逻辑名称替换logical_ndf_file_name(你可以很容易地通过数据库 - 找到> Properties_Files):

DBCC SHRINKFILE('logical_ndf_file_name', EMPTYFILE); 
ALTER DATABASE database_name REMOVE FILE logical_ndf_file_name; 
+0

您的文件中是否有数据?如果是这样,需要多长时间,并且数据库是否存在? –

+0

@Hassan NDF约为8 Gb,而MDF约为60 Gb。总共花了大约20分钟。不确定你的意思是“生活”。我没有下线,但也没有对它进行任何查询。 –

+0

有趣的信息。现场直播我的意思是生产用途或面向客户。 –

0

在成功加载产品的过程中,我运行了空闲的ndf放置。我认为在空的同一事务中运行drop ndf非常重要,以确保数据库不会尝试写入正在删除的文件,但是在空数据库后标记文件不可用,通过尝试另一个文件证明空的后空。