Saltar al contenido

¿Cómo puedo reducir rápidamente todos los archivos de todas las bases de datos?

Solución:

Cuando haces “Tareas -> Reducir” de la GUI, en realidad emite un DBCC SHRINKDATABASE comando detrás de escena. Intentalo. Cuando aparezca el cuadro de diálogo, no haga clic en el botón “Aceptar”. En su lugar, haga clic en el botón “Script”. Verá el comando en una ventana de consulta. Combine eso con una consulta en sys.databases (omita master y msdb), y puede crear un script para reducir todas las bases de datos.

Por ejemplo (tomado del comentario de jcolebrand):

SELECT 
      'USE [' + d.name + N']' + CHAR(13) + CHAR(10) 
    + 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0, TRUNCATEONLY)' 
    + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) 
FROM 
         sys.master_files mf 
    JOIN sys.databases d 
        ON mf.database_id = d.database_id 
WHERE d.database_id > 4;

Copie el resultado de esa consulta y ejecútelo para reducir todos sus archivos.

¿Qué tal una sola línea de declaración SQL?

Por favor lee esta entrada de blog muy interesante antes de ejecutar la siguiente declaración sql.

EXEC sp_MSForEachDB 'DBCC SHRINKDATABASE (''?'' , 0)'

DBCC SHRINKDB (y su primo SHRINKFILE) son extremadamente lentos, porque hay una gran cantidad de ejecución de un solo subproceso en ese código.

Una forma mucho más rápida de reducir un archivo de base de datos es esta:

  • Asignar un nuevo grupo de archivos a la base de datos
  • Haga que este grupo de archivos sea tan grande como debe ser (use sp_spaceused para determinar qué tan grande)
  • Reconstruir todos los índices para este nuevo grupo de archivos
  • Suelta el grupo de archivos antiguo

Debido a que las reconstrucciones de índices son masivamente paralelas, esta técnica a menudo da como resultado una reducción mucho más rápida de la base de datos. Por supuesto, requiere que tenga un poco de espacio adicional para el nuevo grupo de archivos mientras se desarrolla el proceso. Sin embargo, solo necesita suficiente espacio en el nuevo grupo de archivos para contener el grupo de archivos más grande en la instancia (ya que estará recuperando espacio a medida que avanza).

Esta técnica también tiene el beneficio adicional de desfragmentar sus índices en el proceso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *