2016-12-16 348 views
0

我有一个.mdf文件和两个相同的mdf文件的.ndf文件。是否有可能将这些文件合并为一个.mdf文件而不丢失任何数据?是否可以将ndf文件和mdf文件合并成一个单一的mdf文件?

+0

在发布这个问题之前,你研究并发现哪些工作不工作? – dfundako

+0

我做了一些搜索,但我没有找到我的答案,除了我有一个2TB的数据库,所以我不能做一些风险。 –

+2

你最好先计划在测试环境中这样做。制作并不是试图找到你在网上找到的东西的地方。 –

回答

2

是的,你可以..use DBCC SHRINKFILEEmpty选项

From MSDN

EMPTYFILE:(粗体强调矿)

迁移从指定的文件的所有数据其他文件在相同的文件组。换句话说,EmptyFile会将数据从指定文件迁移到同一文件组中的其他文件。 Emptyfile向您保证没有新的数据将被添加到文件中。

可以使用ALTER DATABASE语句删除该文件。

实施例:

DBCC SHRINKFILE (nameofdatafile, EMPTYFILE); 
GO 

-- Remove the data file from the database. 
ALTER DATABASE AdventureWorks2012 
REMOVE FILE Test1data; 
GO 
+0

谢谢@TheGameiswar,如果我有例如file1.mdf,file2.ndf和file3.ndf,你可以提供给我一个快速查询吗?我只是害怕丢失我的数据 –

+0

示例涵盖了,您不会丢失任何数据,用查询中的文件名替换每个文件 – TheGameiswar

+0

好吧我会在示例数据库上尝试它,给我一秒钟 –

0

感谢@TheGameiswar的答案。

如果你有例如file1.mdf,file2.ndf和file3.ndf

在一个文件中合并它们的方式:

DBCC SHRINKFILE(file2, EMPTYFILE); 
GO 

DBCC SHRINKFILE(file3, EMPTYFILE); 
GO 

然后你就可以放心地将其删除:

ALTER DATABASE MyDB 
REMOVE FILE file2; 
GO 

ALTER DATABASE MyDB 
REMOVE FILE file3; 
GO 

file1将包含之后的整个数据。