2010-02-02 24 views
13

Tengo una copia de seguridad de base de datos para la cual SQL Server Management Studio dice que tiene tres archivos: un archivo .mdf, un archivo .ndf y un archivo .ldf. Este archivo de datos secundario (el .ndf) se creó sin ningún motivo obvio, por lo que quiero eliminarlo por completo (sin perder datos, por supuesto), preferiblemente durante la restauración de la base de datos desde la copia de seguridad.Eliminar (fusionar) Archivo de datos secundarios de la base de datos SQL Servers

¿Es esto posible?

+0

El propósito de un NDF es distribuir el archivo IO. Si su servidor tiene NDF, no juegue con el esquema. ¿Por qué te molesta el NDF? –

+3

@Hassan Fue creado solo para superar la fragmentación de volúmenes NTFS y no tiene otras razones para su existencia. Si bien estoy de acuerdo con que los NDF son buenos, los NDF creados por descuido son malvados. –

Respuesta

14

Ok, encontramos una solución.

Primero haga una copia de seguridad de la base de datos.

ejecutar el presente:

USE database_name; 

luego ejecutar esto, y reemplazar logical_ndf_file_name con el nombre lógico del archivo de NDF (que se puede encontrar fácilmente a través de Database-> Properties_Files):

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

¿hubo datos en su archivo? y si es así, ¿cuánto tiempo tomó, y fue el DB en vivo? –

+0

@Hassan NDF tenía unos 8 Gb, mientras que el MDF tenía alrededor de 60 Gb. Tardó unos 20 minutos en total. No estoy seguro de lo que quiere decir con "en vivo". No lo desconecté, pero tampoco se realizaron consultas en su contra. –

+0

información de interés. Por Live me refería al uso de producción o al cliente. –

0

Ejecuté el vacío seguido de la caída de ndf durante la carga de producción exitosamente. Creo que es importante ejecutar el drop ndf en la misma transacción que el vacío para garantizar que la base de datos no intente escribir en el archivo que está eliminando, pero luego, después de un vacío, la base de datos marca los archivos inutilizables, evidenciados al intentar otro shorty vacío después.

Cuestiones relacionadas