2010-02-02 10 views
13

Mam kopię zapasową bazy danych, dla której SQL Server Management Studio mówi, że ma trzy pliki: plik .mdf, plik .ndf i jeden plik .ldf. Ten dodatkowy plik danych (.ndf) został utworzony bez oczywistego powodu, więc chcę go całkowicie usunąć (oczywiście bez utraty danych), najlepiej podczas przywracania bazy danych z kopii zapasowej.Usuwanie (wtórnego) pliku pomocniczego bazy danych SQL Server

Czy to w ogóle możliwe?

+0

Celem NDF jest dystrybucja pliku IO. Jeśli serwer na żywo ma NDF, nie majstruj z tym schematem. Dlaczego przeszkadza ci NDF? –

+3

@Hassan Został stworzony tylko po to, aby przezwyciężyć fragmentację woluminu NTFS i nie ma innych powodów jego istnienia. Chociaż zgadzam się, że NDF są dobre, niedbale tworzone NDF to zło. –

Odpowiedz

14

Dobrze, znalazłem rozwiązanie.

Najpierw wykonaj kopię zapasową bazy danych.

wykonać to:

USE database_name; 

Następnie wykonać to i zastąpić logical_ndf_file_name z logiczną nazwą pliku NDF (które można łatwo znaleźć poprzez> Properties_Files od bazy danych):

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

czy w Twoim pliku znajdowały się dane? a jeśli tak, ile czasu to zajęło, i czy DB był na żywo? –

+0

@Hassan NDF miał około 8 Gb, podczas gdy MDF wynosił około 60 Gb. Wszystko trwało około 20 minut. Nie wiesz, co masz na myśli przez "na żywo". Nie przełączyłem go do trybu offline, ale nie wysłano też żadnych zapytań. –

+0

interesujące informacje. Przez Live miałem na myśli wykorzystanie produkcji lub klienta. –

0

Uruchomiłem puste, a następnie ndf upuść podczas ładowania fabriton pomyślnie. Myślę, że ważne jest, aby uruchomić zrzut ndf w tej samej transakcji, co puste, aby upewnić się, że baza danych nie próbuje pisać do usuwanego pliku, ale po pustej bazie danych oznacza, że ​​pliki są bezużyteczne, o czym świadczy próba innego pusty shorty po.

Powiązane problemy