Digamos que tengo una base de datos SQL Server cuyos archivos de datos se han creado con un tamaño inicial de 100 GB, pero solo contiene 10 GB de datos. Una copia de seguridad de la base de datos tendrá un tamaño de solo 10 GB.
Quiero restaurar esta copia de seguridad en un servidor diferente (o una base de datos diferente en el mismo servidor), pero no quiero que ocupe el mismo espacio en disco que el original (100 GB), que es lo que sucede de forma predeterminada.
No puedo reducir la base de datos original antes de tomar una copia de seguridad (es una base de datos de producción, y necesita tanto espacio previamente asignado); Me podría reducir la base de datos restaurada después de la restauración que se hace, pero realmente preferiría tenerlo no tome 100 GB, mientras que haciendo eso; Además, en este escenario específico no tengo mucho espacio libre en el disco, por lo que la restauración no va a ninguna parte.
¿Hay alguna manera de restaurar la base de datos y hacer que ocupe solo el espacio que contienen los datos reales que contiene ?
fuente
Respuestas:
No, lo siento, de ninguna manera. Restaurar restaura los archivos como estaban en la copia de seguridad. Se debe realizar un enlace después de eso o antes de tomar la copia de seguridad.
fuente
Si tiene poco espacio en el disco, puede colocar el archivo .bak en un recurso compartido de red y restaurarlo desde allí. Debería funcionar si está ejecutando un servidor SQL con una cuenta de dominio y le da al recurso suficiente derechos para leer el archivo.
La otra opción que estaba anteriormente en la canasta de nueces (pero solo útil si está ejecutando sql server 2008 r2) es que SQL Server admite la creación de archivos de base de datos directamente a un recurso compartido sin tener que usar un indicador de seguimiento y puedo decir por experiencia personal que funciona! Para que pueda hacer una restauración CON MOVER a un recurso compartido.
fuente
En general, no. Algunas ideas aleatorias que pueden o no serle de ayuda:
Finalmente, también me gusta un poco de "espacio de codo" en mis bases de datos de producción, pero 90 GB sin 100 GB en total suena un poco extremo. Los siguientes pasos pueden darle lo que necesita y no deberían afectar la producción:
DBCC SHRINKFILE ('myfile.MDF', TRUNCATEONLY)
en el archivo de datos de producción para liberar temporalmente cualquier espacio libre al final del archivo (un TRUNCATEONLY no requiere mucha IO y no fragmentará los índices)DBCC SHRINKFILE
archivo de registro de producción en un momento de baja actividad, justo después de realizar una copia de seguridad del registro.ALTER DATABASE MODIFY FILE
para volver a crecer el archivo de datos de producción al tamaño original.No debería haber ningún impacto en la producción con estos pasos. El único riesgo es si algunos de los datos se encuentran al final del archivo de datos de 100 gb, en cuyo caso el Paso (1) no liberará mucho espacio.
fuente