Necesito vaciar un archivo LDF antes de enviar a un colega. ¿Cómo puedo obligar a SQL Server para truncar el registro?

OriginalEl autor Aidan Ryan | 2008-09-02

6 Comentarios

  1. 119

    si recuerdo bien… en el analizador de consultas o equivalente:

    BACKUP LOG  databasename  WITH TRUNCATE_ONLY
    
    DBCC SHRINKFILE (  databasename_Log, 1)
    Este es sin duda mejor que la configuración de la base de datos el modelo de recuperación SIMPLE (como en Blorgbeard de la respuesta), porque si el modelo de recuperación es COMPLETA, usted tiene que establecer de esa manera por una razón.
    truncate_only está en desuso en SQL Server 2008, por lo que usted tiene que cambiar la base de datos de recuperación simple msdn.microsoft.com/en-us/library/ms143729(SQL.90).aspx
    Para SQL Server 2012 esto funciona, pero sin WITH TRUNCATE_ONLY.
    Agregando a lo que net_prog dijo, para SQL Server 2012 he sustituido la primera línea para BACKUP LOG DatabaseNameHere TO DISK='NUL:'.

    OriginalEl autor ila

  2. 283

    En management studio:

    • No hacer esto en un entorno real, pero para asegurarse de que reducir el tamaño de su dev db tanto como usted puede:
      • Haga clic derecho en la base de datos, elija Properties, entonces Options.
      • Asegúrese de que «el modelo de Recuperación» está ajustado en «Simple», no «Llena»
      • Haga clic en ACEPTAR
    • Haga clic derecho en la base de datos de nuevo, elegir Tasks -> Shrink -> Files
    • Cambiar el tipo de archivo a «Log»
    • Haga clic en ACEPTAR.

    Alternativamente, el SQL para hacerlo:

     ALTER DATABASE mydatabase SET RECOVERY SIMPLE
     DBCC SHRINKFILE (mydatabase_Log, 1)

    Ref: http://msdn.microsoft.com/en-us/library/ms189493.aspx

    Su respuesta ha acaba de guardar mi día! Yo no sabía de la «clic derecho- Tareas -> Reducir» opción. Gracias!
    ¿Qué HACER en un entorno vivo? Copia de seguridad de los registros de la primera?
    Yo no soy DBA, pero sí, creo que las copias de seguridad del registro que va a truncar: technet.microsoft.com/en-us/library/ms179478.aspx
    Si estás usando un modelo de recuperación sencillo, los registros son la base para la recuperación de datos o revertir transacciones. Así, en la producción, usted necesita para copia de seguridad de estos registros antes de que usted puede comprimir los archivos de registro. De lo contrario, no habría ninguna posibilidad de recuperación. Desafortunadamente, si usted está en una situación de recuperación, usted tendrá que volver a cargar todos los registros de transacciones con el fin de recuperar totalmente la DB. Para los momentos de diversión, para estar seguro! 🙂
    en SQL Server 2012 tuve que use mydatabase antes de ejecutar dbcc shrinkfile

    OriginalEl autor Blorgbeard

  3. 51

    Para SQL Server 2008, el comando es:

    ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
    DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)

    Este reducido mis 14 GB archivo de registro a 1MB.

    Como la pregunta es ambigua como para que versión y la versión aceptada respuesta no es aplicable a SQL Server 2008 esta respuesta sigue siendo válida independientemente de la edad.
    Gracias, me ayudó a reducir en un gran archivo de Registro que no reaccionan con DBCC SHRINKFILE
    No te olvides de cambiar el modelo de recuperación COMPLETA cuando haya terminado!
    Debe realizar copias de seguridad antes de hacer esto (o cualquiera de las otras opciones de truncamiento). Si vas a hacer una copia de seguridad completa y comprobar la «Copia de seguridad de sólo copia’ en SSMS, entonces usted no necesita el registro de más. (Este es sólo un punto en el tiempo de copia de seguridad).

    OriginalEl autor Nathan R

  4. 34

    Para SQL 2008, usted puede copias de seguridad de registro de nul dispositivo:

    BACKUP LOG [databaseName]
    TO DISK = 'nul:' WITH STATS = 10

    Y, a continuación, utilizar DBCC SHRINKFILE para truncar el archivo de registro.

    Este es el único que terminó trabajando en mi situación… tengo un error al intentar usar la copia de seguridad con TRUNCATE_ONLY
    Nota: esto puede tomar bastante tiempo, incluso en SSD (tiene que leer el registro para poder descartarlo). Para una de 30 gb de archivo de registro en un moderadamente powered Azure VM se toma 10 minutos para hacer el 40%. Asegúrese de cambiar a los «Mensajes» tomar en SSMS para ver el porcentaje de procesados.

    OriginalEl autor Matej

  5. 3

    registro de copia de seguridad logname con truncate_only seguido por un comando dbcc shrinkfile

    OriginalEl autor SQLMenace

  6. -6

    Otra opción por completo es para separar la base de datos a través de Management Studio. A continuación, basta con eliminar el archivo de registro, o cambiar de nombre y eliminar más tarde.

    Atrás en el Management Studio adjuntar la base de datos de nuevo. En la ventana adjuntar quitar el archivo de registro de la lista de archivos.

    El DB se conecta y crea un nuevo archivo de registro vacío. Después de comprobar que todo está correcto, usted puede eliminar el nuevo nombre de archivo de registro.

    Probablemente usted no debe usar esta opción para las bases de datos de producción.

    Nunca hagas esto! Puede haber datos en el registro no se ha confirmado el archivo de datos. Usted podría perder datos.
    ADVERTENCIA! Esto es incorrecto y peligroso!
    No estoy de acuerdo con el downvoters — es una opción. Los administradores necesitan comprender su situación. Por ejemplo, no habrá ‘comprometidos’, si los datos no existen transacciones abiertas.
    Esta es la única solución que trabajó para mí. Mi coche estaba lleno y no podía copia de seguridad o se encogen y nada parecía funcionar. Gracias!
    Estoy de acuerdo; no es una mejor práctica, pero es una valiosa herramienta para tener si usted no tiene otras opciones como la de Brian escenario.

    OriginalEl autor Rask

Dejar respuesta

Please enter your comment!
Please enter your name here