none
Reclamar espacio en disco RRS feed

  • Pregunta

  • Buen día a todos.

    Quisiera puedan orientarme sobre qué pasos debo ejecutar para devolver el espacio ocupado por un archivo de datos (mdf) para una base SQL Server 2000 luego de haber hecho.

    Para ser más claros, no hace mucho se llevó a cabo una purga de información, la cual liberó espacio utilizado por esos datos, pero entiendo que el Data File se mantiene con el mismo tamaño, pues aunque la base se redujo, no libera automáticamente el espacio ocupado en disco, por lo que habría que correr "DBCC ShrikFile" para devolver el espacio a ese disco, es correcto??

    Agradezco de antemano cualquier ayuda que puedan brindarme.

    Atte.


    Edgardo Mancía

    martes, 12 de mayo de 2015 16:14

Respuestas

  • Saludos y dispensa que discrepe Jhon pero eso son el tipo de cosas que no se deben de hacer.

    Esto es como se debe de hacer http://sqlservertoolbox.blogspot.com/2015/01/liberar-espacio-del-transactional-log.html

    Lo que haces rompe la cadena de transacciones, y puede causar problemas, aunque si hace lo que quieres no es como se debe de hacer.

    martes, 12 de mayo de 2015 17:23

Todas las respuestas

  • Eh

    Normalmente eso no le hara mucho a un datafile eso es mas con los logfiles y eso si es que les haz hecho un transactional log backup, sino puedes romper la cadena al pasarlo a simple recovery model y hacer eso aunque no es recomendado, hacer un shirk a un datafile si recuperaras un poco pero fragmetnaras la base haciendo que su performance decaiga horriblemente.

    martes, 12 de mayo de 2015 16:54
  • Muchas gracias por la respuesta.

    Ahora, cuales serían entonces mis opciones??? Con los Log no hay problema, pero como recupero el espacio en disco que se liberó??

    Gracias nuevamente.


    Edgardo Mancía

    martes, 12 de mayo de 2015 16:59
  • No existe realmente otra manera, pero tendras que hacer una reindexacion de los datos y un update statistics with full scan para compensar el desastre que haga el hacer un shirk al datafile.
    martes, 12 de mayo de 2015 17:01
  • Hola, en una BD el _log simpre se llena de datos por las transacciones que se realizam update, insrt, etc etc..

    yo de esta forma limpio el _log de mi BD, te comparto el script solo cambia XXXXX por tu nombre de BD.

    (mira el peso de tu BD luego ejecuta y miralo denuevo)

                    USE XXXXX
                    GO 
                    ALTER DATABASE XXXXX
                    SET RECOVERY SIMPLE
                    GO 
                    DBCC SHRINKFILE (XXXXX_log)
                    GO 
                    ALTER DATABASE XXXXX
                    SET RECOVERY FULL
                    GO
    
    Saludos. espero te sirva


    JhonTL

    martes, 12 de mayo de 2015 17:19
  • Saludos y dispensa que discrepe Jhon pero eso son el tipo de cosas que no se deben de hacer.

    Esto es como se debe de hacer http://sqlservertoolbox.blogspot.com/2015/01/liberar-espacio-del-transactional-log.html

    Lo que haces rompe la cadena de transacciones, y puede causar problemas, aunque si hace lo que quieres no es como se debe de hacer.

    martes, 12 de mayo de 2015 17:23

  • Si deseas ejecutar el Shink lo debes hacer de la siguiente manera:


    DB Backup
    DB Check
    DB Shrink y reduccion del archivo *.LDF
    DB Update statistics
    DB Reindex
    DB Backup


    La mayoría de las bases de datos requieren que haya espacio disponible para realizer las operaciones diarias normales. Se 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. Es estos casos, no sirve reducer la base de datos reiteradamente.

    Nunca se podrá hacer un Shrink si se esta ejecutando un Backup o viceversa.

    Nunca se configure de forma automática el AUTOSHRINK.

    Durante la tarea de mantencion, se libera espacio. Al empezar las operaciones diarias, se necesita espacio, por lo que hay una acción de auto crecimiento. Las consecuencias: Operaciones pesadas o lentas y fragmentacion de los datos, ambas penalizan gravemente el rendimiento.


    Mira si quieres con el Shink lo debes ejecutar asi:

    DBCC SHRINKDATABASE 
    ( database_name | database_id | 0 
         [ , target_percent ] 
         [ , { NOTRUNCATE | TRUNCATEONLY } ] 
    )
    [ WITH NO_INFOMSGS ]



    https://msdn.microsoft.com/es-es/library/ms190488(v=sql.105).aspx

    Antes de hacer esto lee las recomendaciones que te di, mas estas que informa Microsoft:

    https://msdn.microsoft.com/es-cl/library/ms189035.aspx

    Saludos,


    Edwin Duran Ospina _____________________________________________ Si la respuesta ha sido la solución, favor marcarla.

    miércoles, 13 de mayo de 2015 13:47