Reducir una base de datos

En este tema se describe cómo reducir una base de datos mediante objetos de SQL Server 2012 mediante SQL Server Management Studio o Transact-SQL.

La reducción de los archivos de datos permite recuperar espacio moviendo páginas de datos del final del archivo a espacio desocupado próximo al principio del archivo. Cuando se crea suficiente espacio disponible al final del archivo, las páginas de datos situadas al final del mismo se pueden desasignar y devolver al sistema de archivos.

En este tema

  • Antes de empezar:

    Limitaciones y restricciones

    Recomendaciones

    Seguridad

  • Para reducir una base de datos, use:

    SQL Server Management Studio

    Transact-SQL

  • Seguimiento:  Reduce una base de datos

Antes de empezar

Limitaciones y restricciones

  • El tamaño de la base de datos no puede ser menor que el tamaño mínimo de la base de datos. El tamaño mínimo es el tamaño especificado cuando se creó la base de datos o el último tamaño establecido explícitamente mediante una operación de modificación del tamaño del archivo, como DBCC SHRINKFILE. Por lo tanto, si se creó una base de datos con un tamaño de 10 MB y ha crecido hasta llegar a 100 MB, solo podrá reducirla hasta un tamaño de 10 MB, aunque se hayan eliminado todos los datos de la base de datos.

  • No se puede reducir una base de datos mientras se está realizando una copia de seguridad de la misma. Asimismo, no se puede realizar una copia de seguridad de una base de datos mientras se está realizando una operación de reducción de ésta.

  • DBCC SHRINKDATABASE producirá un error cuando encuentra un índice de almacén de columnas optimizado de memoria xVelocity. El trabajo realizado antes de encontrar el índice de almacén de columnas se llevará a cabo correctamente, por lo que es posible que la base de datos sea más pequeña. Para completar DBCC SHRINKDATABASE, deshabilite todos los índices de almacén de columnas antes de ejecutar DBCC SHRINKDATABASE y, a continuación, vuelva a generar los índices de almacén de columnas.

Recomendaciones

  • Para ver la cantidad actual de espacio disponible (sin asignar) en la base de datos. Para obtener más información, vea Mostrar la información del espacio ocupado por los datos y el registro de una base de datos.

  • Tenga en cuenta la siguiente información cuando vaya a reducir una base de datos:

    • La reducción es más efectiva después de una operación que cree mucho espacio inutilizado, como por ejemplo una operación para truncar o eliminar tablas.

    • La mayoría de las bases de datos requieren que haya espacio disponible para realizar las operaciones diarias normales. Si se reduce una base de datos en forma reiterada y su tamaño vuelve a aumentar, esto indica que el espacio que se redujo es necesario para las operaciones normales. En estos casos, no sirve reducir la base de datos reiteradamente.

    • La reducción no mantiene el estado de fragmentación de los índices de la base de datos y generalmente aumenta la fragmentación hasta cierto punto. Esta es otra razón para no reducir la base de datos reiteradamente.

    • A menos que tenga un requisito específico, no establezca la opción de base de datos AUTO_SHRINK en ON.

Seguridad

Permisos

Debe pertenecer al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Usar SQL Server Management Studio

Para reducir una base de datos

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos de SQL Server y, a continuación, expándala.

  2. Expanda Bases de datos y, a continuación, haga clic con el botón secundario en la base de datos que desee reducir.

  3. Seleccione Tareas y Reducir, y haga clic en Base de datos.

    • Base de datos
      Muestra el nombre de la base de datos seleccionada.

    • Espacio asignado actualmente
      Muestra el total de espacio utilizado y no utilizado de la base de datos seleccionada.

    • Espacio disponible
      Muestra la suma del espacio disponible en los archivos de datos y de registro de la base de datos seleccionada.

    • Reorganizar archivos antes de liberar espacio no utilizado
      Seleccionar esta opción equivale a ejecutar DBCC SHRINKDATABASE y especificar una opción de porcentaje de destino. Desactivar esta opción equivale a ejecutar DBCC SHRINKDATABASE con la opción TRUNCATEONLY. De forma predeterminada, esta opción no está activada cuando se abre el cuadro de diálogo. Si se selecciona se esta opción, el usuario debe especificar una opción de porcentaje de destino.

    • Cantidad máxima de espacio disponible en los archivos tras la reducción
      Especifique el porcentaje máximo de espacio disponible que se va a dejar en los archivos de base de datos después de reducirla. Los valores válidos están comprendidos entre 0 y 99.

  4. Haga clic en Aceptar.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Usar Transact-SQL

Para reducir una base de datos

  1. Conéctese al Motor de base de datos.

  2. Desde la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. Este ejemplo usa DBCC SHRINKDATABASE para reducir el tamaño de los archivos de datos y de registro de la base de datos UserDB, y para dejar un 10 por ciento de espacio disponible en la base de datos.

DBCC SHRINKDATABASE (UserDB, 10);
GO

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Seguimiento: Después de reducir una base de datos

Los datos que se mueven para reducir un archivo se pueden dispersar en cualquier ubicación disponible en el archivo. Esto produce la fragmentación de índices y puede reducir el rendimiento de las consultas que buscan un intervalo del índice. Para eliminar la fragmentación, considere la posibilidad de volver a generar los índices en el archivo después de la reducción.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Vea también

Referencia

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

DBCC (Transact-SQL)

DBCC SHRINKFILE (Transact-SQL)

Conceptos

Reducir un archivo

Archivos y grupos de archivos de base de datos