REVISIÓN: Un rendimiento lento al recuperar una base de datos si hay muchos VLF dentro del registro de transacciones en SQL Server 2005, SQL Server 2008 o en SQL Server 2008 R2

Seleccione idioma Seleccione idioma
Id. de artículo: 2455009 - Ver los productos a los que se aplica este artículo
Microsoft distribuye Microsoft SQL Server 2005, 2008 y 2008 R2 se fija como un archivo descargable. Dado que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en el anterior SQL Server 2005, 2008 y 2008 R2.
Expandir todo | Contraer todo

En esta página

Síntomas

Tenga en cuenta la situación siguiente:
  • Instalar Microsoft SQL Server 2005, Microsoft SQL Server 2008 o Microsoft SQL Server 2008 R2 en un equipo.
  • Uno o más de las bases de datos están en el modelo de recuperación completa o de registro masivo.
  • El tamaño inicial de un archivo de registro de transacciones para la base de datos es pequeño. Sin embargo, el archivo de transacciones aumenta de tamaño.
  • La crecimiento automático incremento de crecimiento del archivo de registro de transacciones se establece en un tamaño pequeño. Por ejemplo, el crecimiento automático incremento de crecimiento está configurado para un megabyte o uno por ciento. O bien, hacer que el archivo de registro de transacciones aumentar mediante un pequeño crecimiento manual.
  • El archivo de registro de transacciones crece por el incremento de tamaño pequeño. Después de un tiempo, el archivo de registro de transacciones es grande.

    Por ejemplo, el archivo de registro de transacciones crece desde cientos de megabytes a 10 gigabytes. El archivo de registro de transacciones crece en incrementos de un megabyte en cada crecimiento.
En este escenario, puede experimentar los problemas siguientes:
  • Recuperación de la base de datos es lenta al inicia si hay un gran volumen de trabajo para recuperar la base de datos.

    Por ejemplo, una transacción está pendiente de abrir durante mucho tiempo. O bien, muchas de las transacciones que son pequeñas no se confirman cuando se apague el SQL Server o se reinicia. En este caso, puede recibir un error durante un tiempo de recuperación de tiempo estimado en la fase de análisis, en la fase de deshacer o en la fase redo. El error similar al siguiente y se registra en el archivo de registro de errores de SQL Server 2005:
    Análisis de base de datos 'MiBaseDeDatos' (7) está completada al 0% (aproximadamente segundos 1234 siguen). Esto es sólo un mensaje informativo. Se requiere ninguna acción de usuario.
  • Recuperación de la base de datos es lenta cuando se restauran un archivo de copia de seguridad de la base de datos completa y una secuencia de registro de transacciones adicionales si se conecta la base de datos.

    Nota Para conectar la base de datos durante la operación de restauración, utilice el CON LA RECUPERACIÓN sintaxis o la CON EL MODO DE ESPERA = <options></options> sintaxis.
  • Recuperación de creación de reflejo de la base de datos es lenta en un servidor de socio en el par espejado.
  • El progreso del agente de lector del registro para la duplicación transaccional es lento para las siguientes operaciones:
    • Se analiza el registro de transacciones de una base de datos del publicador.
    • Se agrega un comando en una base de datos de distribución.
    • Las transacciones se replican.

    Nota Para obtener más información, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    949523 La latencia de la replicación transaccional es alta en SQL Server 2005 cuando el valor de la propiedad de "Tamaño inicial" y el valor de la propiedad de crecimiento automático son pequeños
  • Cuando se crea una instantánea de la base de datos si se registran muchas transacciones, o si los registros de transacciones permanecen activos durante mucho tiempo, se produce un rendimiento lento. Este problema se produce porque la instantánea se tiene que ejecutar la recuperación y los registros de transacciones se desharán.
  • Se produce un rendimiento lento cuando se utiliza el DBCC CHECKDB comprueba la sintaxis para crear una instantánea de la base de datos oculta que tiene que recuperar totalmente la instantánea de la base de datos para ejecutar la coherencia.

Causa

Estos problemas se producen porque los archivos de registro virtuales (VLF) en un archivo de registro de transacciones puede provocar un rendimiento lento cuando SQL Server recorre estos VLF durante las siguientes operaciones:
  • Recuperación de la base de datos
  • La creación de reflejo de base de datos
  • Instantánea de la base de datos
  • Actividades de lector del registro de base de datos transaccional
Cuando un archivo de registro de transacciones para una base de datos crece en pequeños incrementos durante las condiciones de crecimiento extremo, miles de cientos de miles de VLF están presentes dentro de un único conjunto de archivos de registro (.ldf). Sin embargo, crecimiento de registro grandes incrementos grandes crea sólo varios VLF por comparación. Por ejemplo, varios podrían ser menos de 100 VLF.

Nota El VLF es las divisiones o segmentos que utilizan internamente SQL Server en el archivo de registro de transacciones.

Solución

Información sobre la actualización acumulativa

SQL Server 2008 R2

La solución a este problema en primer lugar se publicó en la actualización acumulativa de 6. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008 R2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2489376 Paquete de actualización acumulativa 6 para SQL Server 2008 R2
Nota Como las compilaciones son acumulativas, cada versión nueva de corrección contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron en la anterior de SQL Server 2008 R2. Se recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
981356 Compilaciones de SQL Server 2008 R2 que se publicaron después del lanzamiento de SQL Server 2008 R2

SQL Server 2008 Service Pack 1

En primer lugar, la solución a este problema se publicó en 12 de actualización acumulativa para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2467236 Paquete de actualización acumulativa 12 para SQL Server 2008 Service Pack 1
Nota Como las compilaciones son acumulativas, cada versión nueva de corrección contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron en la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
970365 Compilaciones de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Las revisiones de Microsoft SQL Server 2008 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de SQL Server 2008 Service Pack 1 en una instalación de SQL Server 2008 Service Pack 1. De manera predeterminada, cualquier revisión suministrada en un service pack de SQL Server se incluye en el siguiente service pack de SQL Server.

SQL Server 2008 Service Pack 2

La solución a este problema en primer lugar se publicó en la actualización acumulativa 2 para SQL Server 2008 Service Pack 2. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2467239 Paquete de actualización acumulativa 2 para SQL Server 2008 Service Pack 2
Nota Como las compilaciones son acumulativas, cada versión nueva de corrección contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron en la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2402659 Compilaciones de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 2
Las revisiones de Microsoft SQL Server 2008 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de SQL Server 2008 Service Pack 2 a una instalación de SQL Server 2008 Service Pack 2. De manera predeterminada, cualquier revisión suministrada en un service pack de SQL Server se incluye en el siguiente service pack de SQL Server.

Service Pack 3 de SQL Server 2005

La solución a este problema en primer lugar se publicó en la actualización acumulativa de 13 para SQL Server 2005 Service Pack 3. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2438344 Paquete de actualización acumulativa 13 para SQL Server 2005 Service Pack 3
Nota Como las compilaciones son acumulativas, cada versión nueva de corrección contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
960598 Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 3
Las revisiones de Microsoft SQL Server 2005 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de Service Pack 3 de SQL Server 2005 a una instalación de SQL Server 2005 Service Pack 3. De manera predeterminada, cualquier revisión suministrada en un service pack de SQL Server se incluye en el siguiente service pack de SQL Server.

Service Pack 4 de SQL Server 2005

La solución a este problema en primer lugar se lanzó en 1 acumulativo de actualizaciones para el Service Pack 4 de SQL Server 2005. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2464079 Paquete de actualización acumulativa 1 de SQL Server 2005 Service Pack 4
Nota Como las compilaciones son acumulativas, cada versión nueva de corrección contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2485757 Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 4
Las revisiones de Microsoft SQL Server 2005 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de Service Pack 4 de SQL Server 2005 a una instalación de SQL Server 2005 Service Pack 4. De manera predeterminada, cualquier revisión suministrada en un service pack de SQL Server se incluye en el siguiente service pack de SQL Server.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Se refiere a:".

Solución

Instale este hotfix y reiniciar SQL Server puede mejorar el rendimiento de recuperación. Por ejemplo, el podría mejorar el rendimiento de las operaciones siguientes después de instalar este hotfix y reiniciar SQL Server:
  • Recuperación de la base de datos
  • La creación de reflejo de base de datos
  • Instantánea de la base de datos
  • Actividades de lector del registro de base de datos transaccional

Si no puede instalar esta revisión, puede realizar las siguientes soluciones para mitigar un problema existente y evitar una futura aparición.

Mitigar un problema existente

  • Espere a que la restauración o la operación de recuperación para completar

    Si tiene una base de datos no recuperado que experimenta un rendimiento lento cuando restaure o recuperación de la base de datos, tendrá que esperar para que finalizar la operación de restauración o recuperación. Por ejemplo, puede ver el estado sin conexión o el estado de recuperación en SQL Server Management Studio (SSMS) de una base de datos no recuperado. Detener SQL Server normalmente no ofrece ningún alivio para una lenta recuperación y puede tardar más tiempo para repetir la misma fase de análisis de recuperación, fase de rehacer o deshacer la fase.
  • Evitar restaurar la secuencia del registro de transacciones que contiene miles de VLF

    Si experimenta un rendimiento lento mientras restaurar y recuperar una base de datos mediante un archivo de copia de seguridad, no puede restaurar las secuencias del registro de transacciones que contienen miles de VLF. Para identificar el archivo de copia de seguridad que tiene los mayoría los archivos de registro virtuales registrado, utilice la siguiente instrucción para ver las columnas FirstLSN y LastLSN en los archivos de copia de seguridad del registro:
    RESTORE HEADERONLY de DISK='C:\folder\file.trn'

    Puede decidir evitar restaurar los archivos de copia de seguridad del registro. O bien, puede utilizar el DETENER AT instrucción en el RESTAURAR comandos para evitar que las partes altamente fragmentadas de los registros de transacciones. Si no restaurar completamente las secuencias de registro hasta el punto más reciente en el transcurso de un escenario de recuperación de errores, se produce la pérdida de datos en la base de datos de SQL Server. La pérdida de datos ocurre porque no todas las transacciones que se encuentren. Por lo tanto, hay una decisión empresarial de equilibrio. Puede restaurar completamente un registro de transacciones altamente fragmentados. Sin embargo, esta operación puede tardar varias horas. O bien, puede utilizar el DETENER AT instrucción de la recuperación para detener la recuperación antes de la parte altamente fragmentada del registro. Sin embargo, las transacciones falta que omite se pierden.

    Nota Sin necesidad de instalar este hotfix, normalmente no hay ningún recurso seguro de recuperación acelerada de después de reiniciar SQL Server. SQL Server tiene que encontrar la lista de VLF para analizar los archivos de registro para transacciones de rehacer completado y deshacer las transacciones incompletas para finalizar la recuperación para conectar la base de datos de forma segura. No puede omitir sin ningún riesgo las transacciones durante la recuperación.

Evitar que una futura aparición

  • Establezca el incremento de la base de datos con un tamaño adecuado

    Si el tamaño de incremento es demasiado pequeño, habrá muchos archivos de registro virtuales (VLF) y puede experimentar un rendimiento lento en SQL Server. Si el tamaño de incremento es demasiado grande, las consultas que hacen que la transacción crecen automáticamente a los registros pueden tener que esperar mucho tiempo finalizar un crecimiento. Por lo tanto, puede producirse un error de tiempo de espera en SQL Server. Para evitar estos problemas, puede establecer el tamaño de incremento de la base de datos con un tamaño adecuado.
  • Eliminar el gran número de VLF y utilizar un crecimiento manual

    Si es muchos VLF en el registro de transacciones, reducir el tamaño del registro de transacciones y convertirlo a aumentar antes de negocio pico para satisfacer la demanda mediante el uso de un crecimiento manual. Por ejemplo, el registro de transacciones aumenta a un tamaño medio razonable en un incremento grande o en un único crecimiento manual. Por lo tanto, el tamaño del registro de transacciones alcanza una capacidad máxima, y los archivos de copia de seguridad del registro se programan de forma periódica y frecuente. Además, se pueden truncar el registro de transacciones y el VLF del registro de transacciones se pueden reutilizar en un ciclo.
  • Cómo comprimir y aumentar el registro de transacciones manualmente

    Para corregir un registro que tiene demasiados VLF, siga estos pasos para reducir el registro e incrementarlo manualmente:
    1. Si la base de datos está en un modelo de recuperación completa o de registro masivo, debe hacer copia de seguridad del registro de transacciones para permitir la active VLF truncado y volver a utilizar.
      BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn'

      Para obtener más información acerca de cómo hacer copia de seguridad del archivo de registro de transacciones mediante el uso de MSE, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):Para obtener más información acerca de cómo hacer copia de seguridad del archivo de registro de transacciones mediante instrucciones de Transact-SQL, visite el siguiente sitio Web MSDN:
    2. Para determinar el nombre lógico del archivo de registro de transacciones, ejecute una de las siguientes instrucciones.
      Instrucción 1
      exec sp_helpfile 
      Declaración 2
      select * from sys.sysfiles 
      Para reducir el tamaño del archivo de registro de transacciones al tamaño deseado, utilice el código siguiente:
      DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY) 
    3. Puede aumentar el tamaño del archivo de registro de transacciones a un tamaño adecuado. Se recomienda permitir que el tamaño del archivo de registro de transacción crecer hasta el tamaño máximo de regular. Por lo tanto, el crecimiento automático se evita el incremento. Para establecer el tamaño del registro de transacciones, utilice la página de Propiedades de la base de datos en SSMS o utilizar lo siguiente MODIFICAR BASE DE DATOS sintaxis:
      MODIFY FILE ( NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB) 

      Para obtener más información acerca de cómo aumentar el tamaño de una base de datos en SSMS, visite el siguiente sitio Web MSDN:
      Cómo aumentar el tamaño de una base de datos en SSMS
      Para obtener más información acerca de la ALTER DATABASE MODIFICAR ARCHIVO sintaxis, visite el siguiente sitio Web MSDN:
      Información general acerca de la sintaxis de ALTER DATABASE MODIFY FILE

Más información

Puede comprobar el número de segmentos VLF revisando el archivo de registro de errores SQL y a continuación, buscar el número de secuencia de registro (LSN) en cada archivo de copia de seguridad de registro de transacciones. Los primeros dígitos antes del símbolo de dos puntos en los LSNs se corresponden con el número del LSN.

Por ejemplo, el primer número en el primer mensaje informativo para el LSN es 1. Sin embargo, el primer número en el segundo mensaje informativo para el LSN es 100001. En este escenario, hay 100.000 VLF que se utiliza entre la hora del primer mensaje informativo y del segundo mensaje informativo. Por lo tanto, el registro de transacción fragmentados registrada que tiene muchos archivos de registro virtuales (VLF) es similar a la siguiente:

{Registro realizó la copia. Base de datos: nombre_de_la_bd, date(time) de creación: 2010/07/08(12:36:46), primer LSN: 1:5068:70, último LSN: 1:5108:1, el número de dispositivos de volcado: 1, información del dispositivo: (archivo = 1, tipo = disco: {'C:\folder\logbackup1.trn'}). Esto es sólo un mensaje informativo. Se requiere ninguna acción de usuario.

Se copia de registro. Base de datos: nombre_de_la_bd, date(time) de creación: 2010/07/08(15:36:46), primer LSN: 100001:5108:1, último LSN: 100002:5108:1, el número de dispositivos de volcado: 1, información del dispositivo: (archivo = 2, tipo = disco: {'C:\folder\logbackup2.trn'}). Esto es sólo un mensaje informativo. Ninguna acción de usuario es necesaria}.

En la siguiente tabla se proporciona más información acerca de los productos o herramientas que comprueban automáticamente si la condición que se describe en la sección "Síntomas" en la instancia de SQL Server y en las versiones de SQL Server con el que se evalúa la regla.

Contraer esta tablaAmpliar esta tabla
Software de reglaTítulo de la reglaDescripción de la reglaVersiones del producto con el que se evalúa la regla
Asesor de System CenterSQL Server con la duplicación transaccional, el rendimiento del agente de lector de registro puede verse afectado debido al tamaño del registro de transacciones o el número de VLFEn esta instancia de SQL Server el Asesor ha detectado la replicación transaccional de presencia con el número de registro de transacciones o de VLF tamaño considerablemente mayor. El rendimiento del agente de lector de registro se ve afectado por el tamaño del registro de transacciones o el número de VLF. Reducir el tamaño del registro de transacciones y el número de VLF para mejorar el rendimiento del agente de lector del registro.SQL Server 2008

SQL Server 2008 R2

SQL Server 2012



Referencias

Para obtener más información acerca de la arquitectura física del registro de transacciones, visite el siguiente sitio Web MSDN:
Información general sobre la arquitectura física del registro de transacciones

Para obtener más información acerca de números de secuencia de registro (LSN), visite el siguiente sitio Web MSDN:
Información general acerca de los números de secuencia de registro

Para obtener más información sobre el error 1413 cuando se inicia la creación de reflejo de base de datos, visite el siguiente sitio Web MSDN:
Información general sobre el error 1413 cuando se inicia la creación de reflejo de base de datos

Para obtener más información acerca de cómo puede afectarle el tiempo de recuperación de base de datos una estructura de archivos de registro, visite el siguiente sitio Web MSDN:
¿Cómo una estructura de archivos de registro puede afectar al tiempo de recuperación de base de datos

Para obtener más información acerca del registro de transacciones VLF, visite el siguiente sitio Web MSDN:
Información general sobre el archivo de registro de transacciones

Para obtener más información acerca de cómo crear una instantánea de la base de datos, visite el siguiente sitio Web MSDN:
Cómo crear una instantánea de la base de datos
Para obtener más información sobre el modelo de servicio Incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897 Un modelo de servicio Incremental está disponible en el equipo de SQL Server para entregar revisiones de problemas detectados
Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499Nuevo esquema de nomenclatura para los paquetes de actualización de software de Microsoft SQL Server
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 Descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 2455009 - Última revisión: lunes, 06 de enero de 2014 - Versión: 4.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Evaluation Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
Palabras clave: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2455009 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 2455009

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com