2010-02-02 16 views
13

Possiedo un backup del database per il quale SQL Server Management Studio dice che ci sono tre file: un file , un file .ndf e un file .ldf. Questo file di dati secondario (quello .ndf) è stato creato senza ovvi motivi, quindi voglio rimuoverlo del tutto (senza perdere dati, ovviamente), preferibilmente durante il ripristino del database dal backup.Rimuovere (unire) il file di dati secondario del database SQL Server

È tutto fattibile?

+0

Lo scopo di un NDF è di distribuire il file IO. Se si vive un server, NDF non si agita con lo schema. Perché l'NDF ti dà fastidio? –

+3

@Hassan È stato creato solo per superare la frammentazione del volume NTFS e non ha altre ragioni per la sua esistenza. Mentre sono d'accordo che gli NDF sono buoni, gli NDF creati con noncuranza sono malvagi. –

risposta

14

Ok, ho trovato una soluzione.

Prima eseguire il backup del database.

eseguire questo:

USE database_name; 

quindi eseguire questo, e sostituire logical_ndf_file_name con il nome logico del file NDF (che si può facilmente scoprire attraverso Database-> Properties_Files):

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

c'erano dati nel tuo file? e se sì, quanto tempo ci è voluto, ed è stato il DB dal vivo? –

+0

@Hassan NDF era di circa 8 Gb, mentre MDF era di circa 60 Gb. Ci sono voluti circa 20 minuti in tutto. Non sei sicuro di cosa intendi con "live". Non l'ho portato offline, ma nessuna query è stata eseguita contro di esso. –

+0

informazioni interessanti. Con Live intendevo l'uso della produzione o l'orientamento al cliente. –

0

Ho eseguito il vuoto seguito da calo ndf durante il caricamento del prodotto con successo. Penso che sia importante eseguire il rilascio ndf nella stessa transazione del file vuoto per garantire che il database non tenti di scrivere sul file che si sta cancellando, ma dopo un vuoto il database contrassegna i file inutilizzabili, evidenziando il tentativo di un altro vuoto dopo.