Reducción de una base de datos

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

En este artículo se describe cómo reducir una base de datos en SQL Server mediante el Explorador de objetos en 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 libre al final del archivo, las páginas de datos situadas al final del archivo pueden desasignarse y devolverse al sistema de archivos.

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 especificado al crear la base de datos, o bien el último tamaño que se ha 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. Por el contrario, no se puede realizar una copia de seguridad de una base de datos mientras se está realizando una operación de reducción en ella.

Recomendaciones

  • Para ver la cantidad actual de espacio disponible (sin asignar) en la base de datos. Para obtener más información, consulte 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:

    • Una reducción es más efectiva después de una operación que genera mucho espacio de almacenamiento no utilizado, como por ejemplo, una instrucción DELETE a gran escala, una operación para truncar una tabla o una operación para eliminar tablas.

    • La mayoría de las bases de datos requieren que haya espacio disponible para realizar las operaciones diarias normales. Si reduce una base de datos de forma reiterada y advierte que su tamaño vuelve a aumentar, esto es señal de que el espacio disponible es necesario para las operaciones normales. En estos casos, no sirve reducir la base de datos reiteradamente. Los eventos de crecimiento automático necesarios para aumentar los archivos de base de datos perjudican al rendimiento.

    • 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.

Permisos

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

Comentarios

Las operaciones de reducción en curso pueden bloquear otras consultas en la base de datos; asimismo, las consultas ya están en curso pueden impedir que se lleven a cabo. Las operaciones de reducción de bases de datos, incluidas a partir de SQL Server 2022 (16.x) tienen una opción WAIT_AT_LOW_PRIORITY. Esta característica es una nueva opción extra para DBCC SHRINKDATABASE y DBCC SHRINKFILE. Si una nueva operación de reducción en modo WAIT_AT_LOW_PRIORITY no puede obtener los bloqueos necesarios debido a que hay una consulta de larga duración ya en curso, la operación de reducción agotará el tiempo de espera transcurrido un minuto y se cerrará de manera imperceptible, lo que impide que se bloqueen otras consultas. Para obtener más información, consulte DBCC SHRINKDATABASE.

Para obtener más información sobre la administración de archivos y las operaciones de reducción específicas de la base de datos de Azure SQL, consulte Administración de espacios de archivos en la base de datos de Azure SQL.

Uso de SQL Server Management Studio

Se aplica a: SQL Server, Azure SQL Managed Instance

Reducción de una base de datos

  1. En el Explorador de objetos , conéctese a una instancia de Motor de base de datos de SQL Servery, después, expándala.

  2. Expanda Bases de datosy, después, haga clic con el botón derecho en la base de datos que quiera reducir.

  3. Seleccione Tareas, Reducir y después Base de datos.

    • Base de datos

      Muestra el nombre de la base de datos de 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. Seleccione Aceptar.

Uso de Transact-SQL

Reducción de una base de datos

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar. En este ejemplo se 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 % de espacio disponible en la base de datos.

DBCC SHRINKDATABASE (UserDB, 10);
GO

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. Para más información, consulte Recompilación de un índice.