我有一个数据库备份,SQL Server Management Studio称其中有三个文件:一个.mdf
文件、一个.ndf
文件和一个.ldf
文件。这个第二数据文件(即.ndf
文件)似乎没有显而易见的原因被创建,所以我想彻底删除它(当然不能丢失数据),最好在从备份还原数据库时进行。
这可行吗?
我有一个数据库备份,SQL Server Management Studio称其中有三个文件:一个.mdf
文件、一个.ndf
文件和一个.ldf
文件。这个第二数据文件(即.ndf
文件)似乎没有显而易见的原因被创建,所以我想彻底删除它(当然不能丢失数据),最好在从备份还原数据库时进行。
这可行吗?
好的,找到了一个解决方案。
首先备份数据库。
执行以下命令:
USE database_name;
接着执行以下命令,并将 logical_ndf_file_name
替换为你的NDF文件的逻辑名称(你可以通过“数据库->属性_文件”轻易地找到它):
DBCC SHRINKFILE('logical_ndf_file_name', EMPTYFILE);
ALTER DATABASE database_name REMOVE FILE logical_ndf_file_name;
我在生产加载期间成功地运行了空的 followed by ndf drop。我认为在同一个事务中运行 drop ndf 是很重要的,以确保数据库不会尝试写入正在删除的文件,但是在执行 empty 后,数据库会将文件标记为不可用,这可以通过之后立即尝试另一个 empty 来证明。