I have a database backup for which SQL Server Management Studio says that it has three files in it: an .mdf
file, an .ndf
file and one .ldf
file. This secondary data file (the .ndf
one) was created for no obvious reason, so I want to remove it altogether (without losing data, of course), preferably during while the database is being restored from the backup.
Is this at all doable?
NDF files are just like MDF files, they contain data. LDF files are for log data. Do NOT delete NDF files!
To delete data or log files from a databaseExpand Databases, right-click the database from which to delete the file, and then click Properties. Select the Files page. In the Database files grid, select the file to delete and then click Remove. Click OK.
You can use DBCC SHRINKFILE with the EMPTY FILE option which will migrate the data to all of the other files in the same filegroup. After this completes no data should be in the secondary file and you can use an alter database to remove the file.
Ok, found a solution.
First back up the database.
Execute this:
USE database_name;
Then execute this, and replace logical_ndf_file_name
with the logical name of your NDF file (which you can easily find out via Database->Properties_Files):
DBCC SHRINKFILE('logical_ndf_file_name', EMPTYFILE);
ALTER DATABASE database_name REMOVE FILE logical_ndf_file_name;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With