2009-01-26 17 views
15

Estoy tratando de administrar el tamaño de un archivo de registro de SQL Server 2008. Tengo una base de datos de informes que se carga una vez al día. El modelo de recuperación simple es el que mejor se ajusta, ya que no hay más transacciones que la carga de la mañana, y puedo volver a crear esos registros. Mis objetivos son tener el registro de transacciones en un tamaño fijo, lo suficientemente grande como para que no tenga que asignar espacio nuevo durante la carga.Cómo puedo administrar el tamaño de registro de SQL Server

Mi problema es que el registro sigue creciendo. Sé que se supone que el registro está marcado para su reutilización, pero ¿por qué el registro sigue creciendo? Log_reuse_wait_desc muestra "Nothing".

que puede reducir el tamaño del archivo de registro de 1 MB, así que sé que no hay transacciones en el mismo. Puedo configurar un trabajo para hacer esto, pero preferiría dejar el registro a 500MB, que es suficiente para manejar las cargas diarias. Si hago esto, el registro crece.

¿Cómo puedo mantener el registro en un tamaño consistente?

Tenga en cuenta: Reducir el tamaño del archivo de registro no se ocupa de este problema. Yo se como hacer eso. Estoy intentando encontrar una forma de volver a utilizar el espacio en el registro de transacciones.

+0

Me respondió una pregunta similar hace poco: [http://stackoverflow.com/questions/453858/sql-server-log-file-confusion#454137](http://stackoverflow.com/ preguntas/453858/sql-server-log-file-confusion # 454137) – DavGarcia

+0

¿Está haciendo una copia de seguridad de su registro de transacciones regularmente? – bobwienholt

+0

Dado que el modelo de recuperación aquí es 'SIMPLE ', las copias de seguridad del registro de transacciones no se ofrecen como una opción. El registro de transacciones aún puede llenarse entre "puntos de control", en cuyo caso tendría que cambiar el tamaño del archivo de registro o cambiarlo a crecimiento no restringido (que por cierto aún muestra un crecimiento "restringido", con un tamaño máximo de 2,097,152 MB) . Para obtener más información, consulte este enlace: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/c00aba0e-45b1-43ef-8188-ea258c0eeb8b/transaction-log-size-simple-recovery-model?forum = sqldatabaseengine –

Respuesta

4

crear un trabajo de mantenimiento que las copias de seguridad de la base de datos y se reduce el registro de

+0

Tengo un trabajo que respalda la base de datos. Puedo reducir el registro. Sin embargo, esto no resuelve el problema ya que el registro tendrá que asignar espacio cuando se ejecute el trabajo de importación. –

0

De la parte superior de la cabeza se puede utilizar DBCC SHRINKFILE para hacer esto.

3

El comando DBCC SHRINKFILE le permite especificar un tamaño de destino:

DBCC SHRINKFILE (DataFile1, 7) 

reduce el archivo DATAFILE1 a 7 MB

documento en: MSDN

25

El archivo de registro se utiliza para fines transaccionales, incluso si la base de datos está en MODO DE RECUPERACIÓN SIMPLE. Si el tamaño de LOG realmente está creciendo más allá de 500 MB, entonces alguien está ejecutando una consulta o procedimiento almacenado que requiere ese espacio.

Por ejemplo, tal vez va a crear índices en contra de sus tablas de informes. Eso se hará dentro de una transacción para que los cambios puedan revertirse en caso de error. Sin embargo, el espacio utilizado se liberará después para otras transacciones una vez completado.

lo tanto, si el tamaño del registro es a partir de 1 MB y aumentando decir, 700 MB, entonces se está haciendo algo que requiere ese espacio. Si bloquea el tamaño a 500 MB, eventualmente recibirá un error de "archivo de registro sin espacio".

Pero si realmente quiere fijarlo en 500 MB, puede hacer lo siguiente: (estoy usando SQL Server 2005)

  1. lanzamiento de Microsoft SQL Server Management Studio
  2. Situar su base de datos y haga clic derecho sobre él. Seleccionar propiedades
  3. Haga clic en la sección Archivos
  4. Busque la línea REGISTRO DE ARCHIVO.
  5. cambiar el tamaño inicial a: 500
  6. Busque la sección de crecimiento automático y haga clic en la elipse (...)
  7. Desactive la opción "Habilitar crecimiento". Haga clic en Aceptar.
  8. Haga clic en Aceptar para realizar el cambio.

Nota: También puede establecer un tamaño máximo de archivo de registro en la "sección de crecimiento automático".

Alternativamente, puede usar la siguiente secuencia de comandos para realizar el cambio. Reemplace DATABASENAME con el valor apropiado. Cambie también el nombre del archivo de registro si es necesario.

USE [master] 
GO 
ALTER DATABASE [DatabaseName] MODIFY FILE (NAME = N'DATABASENAME_Log', SIZE = 512000KB , FILEGROWTH = 0) 
GO 

Cuestiones relacionadas