Introducción En Microsoft SQL Server 2005, puede reducir los archivos de registro de transacciones en una base de datos para eliminar las páginas no utilizadas. El motor de base de datos reutilizará el espacio de manera eficiente. Sin embargo, cuando un archivo de registro de transacciones crece inesperadamente, puede ser necesario reducirlo manualmente.
Este artículo describe cómo utilizar la instrucción DBCC SHRINKFILE para reducir manualmente los archivos de registro de transacciones en una base de datos de SQL Server 2005 en un modelo de recuperación completa. El método que utiliza para reducir un archivo de registro de transacciones en SQL Server 2005 puede ser diferente del método que utiliza para reducir un archivo de registro de transacciones en SQL Server 2000. Para obtener más información acerca de cómo reducir los archivos de registro de transacciones en SQL Server 2000, haga clic en el número de artículo siguiente para ver el artículo correspondiente en Microsoft Knowledge Base:
272318 ( http://support.microsoft.com/kb/272318/ ) INF: Reducción de registros de transacciones en SQL Server 2000 usando DBCC SHRINKFILE
Volver al principio
Más información En SQL Server 2005, la operación de reducción (DBCC SHRINKFILE) intenta inmediatamente reducir el archivo de registro de transacciones especificado al tamaño requerido. Para reducir manualmente los archivos de registro de transacciones en el modelo de recuperación completa, primero haga una copia de seguridad de los archivos de registro de transacciones. Luego, use la instrucción DBCC SHRINKFILE para reducir el archivo de registro de transacciones.
Generalmente, reducir los archivos de registro de transacciones en SQL Server 2005 es más rápido que reducir los archivos de registro de transacciones en SQL Server 2000. La razón es que el Administrador de registros de SQL Server 2005 crea o reutiliza archivos de registro virtuales inactivos según el orden de almacenamiento del disco físico. Por lo tanto, la parte inactiva de un archivo de registro de transacciones normalmente se encuentra al final del archivo.
Por ejemplo, un archivo de registro de transacciones puede contener 100 archivos de registro virtuales, pero solo utiliza 2 archivos de registro virtuales. SQL Server 2000 almacena el primer archivo de registro virtual utilizado al principio del archivo de registro de transacciones y el segundo archivo de registro virtual utilizado en el medio del archivo de registro de transacciones. Para reducir el archivo de registro de transacciones a solo 2 archivos de registro virtual, SQL Server llenará el resto del segundo archivo de registro virtual con entradas de registro virtual. SQL Server mueve el comienzo del registro lógico al siguiente archivo de registro virtual disponible especificado por el administrador de registros. El administrador de registros puede crear un archivo de registro virtual en medio del archivo de registro de transacciones, antes del último archivo de registro virtual activo. En este caso, se deben utilizar múltiples operaciones de copia de seguridad de registros y múltiples operaciones de reducción para reducir con éxito el archivo de registro de transacciones a 2 archivos de registro virtuales. En el peor de los casos, es posible que tenga que utilizar 50 operaciones de copia de seguridad de registros y 50 operaciones de reducción para reducir con éxito el archivo de registro de transacciones a 2 archivos de registro virtuales.
Sin embargo, en SQL Server 2005, puede reducir inmediatamente el archivo de registro de transacciones a 2 archivos de registro virtuales ejecutando una instrucción DBCC SHRINKFILE. Esto se debe a que el Administrador de registros de SQL Server 2005 crea 2 archivos de registro virtuales en el orden en que se almacenan en el disco físico. Ambos archivos de registro virtuales se encuentran al principio del archivo de registro de transacciones.
Cuando intenta reducir un archivo de registro de transacciones que tiene muy poco espacio libre en SQL Server 2005, debe realizar otra operación de copia de seguridad del registro. Esta operación de copia de seguridad de registro adicional trunca el archivo de registro de transacciones a un tamaño más pequeño. Al reducir los archivos de registro de transacciones en SQL Server 2000, además de realizar los tres pasos anteriores, también debe realizar esta operación de copia de seguridad del registro. Para obtener más información, consulte el artículo de Microsoft Knowledge Base mencionado en la sección "Introducción". Para reducir un archivo de registro de transacciones con muy poco espacio libre en SQL Server 2005, siga estos pasos: 1. Haga una copia de seguridad de los archivos de registro de transacciones para que la mayoría de los archivos de registro virtuales activos estén inactivos. Por lo tanto, los archivos de registro virtuales inactivos se pueden eliminar en un paso posterior. Para ello, ejecute una instrucción Transact-SQL similar a la siguiente instrucción Transact-SQL. REGISTRO DE COPIA DE SEGURIDAD <NombreDeBaseDeDatos> AL DISCO = '<Archivo de copia de seguridad>'
Nota: En esta declaración, <DatabaseName> es un marcador de posición para el nombre de la base de datos de la que se realizará la copia de seguridad. En esta declaración, <BackupFile> es un marcador de posición para la ruta completa al archivo de copia de seguridad.
Por ejemplo, ejecute la siguiente instrucción Transact-SQL. REGISTRO DE RESPALDO TestDB AL DISCO='C:TestDB1.bak'
2. Reduzca el archivo de registro de transacciones. Para ello, ejecute una instrucción Transact-SQL similar a la siguiente instrucción Transact-SQL. DBCC SHRINKFILE (<Nombre de archivo>, <Tamaño de destino>) CON NO_INFOMSGS
Nota: En esta declaración, <FileName> es un marcador de posición para el nombre del archivo de registro de transacciones. En esta declaración, <TargetSize> es un marcador de posición para el tamaño de destino del archivo de registro de transacciones. El tamaño objetivo debe ser razonable. Por ejemplo, no puede reducir un archivo de registro de transacciones a menos de 2 archivos de registro virtuales.
3. Si la instrucción DBCC SHRINKFILE no reduce el archivo de registro de transacciones al tamaño objetivo, ejecute la instrucción BACKUP LOG mencionada en el paso 1 para inactivar más archivos de registro virtuales.
4. Ejecute la instrucción DBCC SHRINKFILE mencionada en el paso 2. Después de hacer esto, el archivo de registro de transacciones debería tener un tamaño cercano al objetivo.
En resumen, el algoritmo que utiliza el Administrador de registros para seleccionar el siguiente archivo de registro virtual ha cambiado en SQL Server 2005. Por lo tanto, reducir los archivos de registro de transacciones en SQL Server 2005 difiere de reducir los archivos de registro de transacciones en SQL Server 2000 en las siguientes maneras: • Si el archivo de registro tiene una gran cantidad de espacio libre, reducir el archivo de registro de transacciones en SQL Server 2005 es más rápido que Reducir el archivo de registro de transacciones en SQL Server 2000 Reducir los archivos de registro de transacciones es más rápido.
• Reducir un archivo de registro de transacciones en SQL Server 2005 es lo mismo que reducir un archivo de registro de transacciones en SQL Server 2000 si el archivo de registro no tiene espacio libre.
• Reducir un archivo de registro de transacciones en SQL Server 2005 requiere una operación de copia de seguridad del registro más que realizar esta operación en SQL Server 2000 si el archivo de registro tiene muy poco espacio libre.