2010-02-02 4 views
13

У меня есть резервная копия базы данных, для которой SQL Server Management Studio говорит, что в ней есть три файла: файл .mdf, файл .ndf и один файл .ldf. Этот вторичный файл данных (.ndf) был создан без какой-либо очевидной причины, поэтому я хочу удалить его вообще (без потери данных, конечно), желательно во время восстановления базы данных из резервной копии.Удалить (объединить) файл вторичных данных базы данных SQL Server

Возможно ли это вообще?

+0

Целью NDF является распространение файла IO. Если вы живете на сервере, NDF не переделывают схему. Почему NDF беспокоит вас? –

+3

@ Hassan Он был создан только для преодоления фрагментации фрагмента NTFS, и у него нет других причин для его существования. Хотя я согласен с тем, что NDF хороши, небрежно созданные NDF являются злыми. –

ответ

14

Хорошо, нашел решение.

Сначала создайте резервную копию базы данных.

Execute это:

USE database_name; 

Затем выполнить это, и заменить logical_ndf_file_name с логическим именем файла NDF (который вы можете легко узнать с помощью database-> Properties_Files):

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

были ли данные в вашем файле? и если да, то сколько времени это нужно, и была ли БД жить? –

+0

@ Hassan NDF был около 8 Гб, а MDF - около 60 Гб. Это заняло около 20 минут. Не уверен, что вы подразумеваете под «живым». Я не принимал его в автономном режиме, но никаких запросов не было. –

+0

интересной информации. По Live я имел в виду производство или клиент. –

0

Я побежал пустым, а затем снижался ndf при успешной загрузке продукта. Я думаю, что важно запустить drop ndf в той же транзакции, что и пустой, чтобы гарантировать, что база данных не пытается записать файл, который вы удаляете, но после того, как пустая база данных отмечает, что файлы непригодны для использования, подтверждается попыткой другого пустой короткийy после.