Saltar al contenido

¿Por qué aparece El registro de transacciones de la base de datos ‘X’ está lleno debido a ‘ACTIVE_TRANSACTION’ con recuperación simple y registro de crecimiento automático?

Recuerda que en la informática un error casi siempre tiene diversas resoluciones, por lo tanto te enseñaremos la mejor y más óptimo.

Solución:

Cuando veo este error, generalmente se debe a que hubo una transacción de larga ejecución que aún no se ha confirmado. Tenga en cuenta que el tamaño de la transacción de ejecución prolongada no es necesariamente el problema. Si la transacción cambia cualquier cantidad de datos, evitará que el registro de transacciones se borre más allá de ese VLF. Entonces, si su registro de transacciones es de 1 GB y realiza una actividad en la base de datos que requiere más de 1 GB de registro de transacciones desde su transacción activa más antigua, puede encontrarse con un problema.

Para una demostración simple, tengo una base de datos con un modelo de recuperación de SIMPLE y un registro limitado a 100 MB. En una sesión, inserto y elimino datos en un bucle:

create table dbo.X_DUMMY_TABLE (COL VARCHAR(4000));

SET NOCOUNT ON;

-- truncate and insert data in a loop
WHILE 1 = 1
BEGIN
    TRUNCATE TABLE X_DUMMY_TABLE

    BEGIN TRANSACTION
    INSERT INTO dbo.X_DUMMY_TABLE
    SELECT REPLICATE('Z', 4000)
    FROM dbo.getNums(100);
    COMMIT TRANSACTION;

    CHECKPOINT;
END;

Con un modelo de recuperación de SIMPLE esto no causa ningún problema. Usando DBCC SQLPERF(LOGSPACE) Puedo ver que el registro está entre 1 y 7 % lleno. Tenga en cuenta que el archivo de registro de transacciones permanece en 100 MB.

Ahora iniciaré una transacción en otra sesión que inserte solo una fila. No cometeré la transacción:

create table dbo.X_DUMMY_TABLE_2 (COL VARCHAR(4000))

BEGIN TRANSACTION

INSERT INTO dbo.X_DUMMY_TABLE_2
SELECT 'Z';
-- note the lack of a COMMIT

Después de unos 3 segundos, la primera sesión arroja este error:

Msj 9002, Nivel 17, Estado 4, Línea 11

El registro de transacciones de la base de datos ‘SE_DB3’ está lleno debido a ‘ACTIVE_TRANSACTION’.

En mi caso, algo cambió en las propiedades de la base de datos -> Archivos Autogroth para el archivo de registro estaba deshabilitado. Habilitarlo solucionó el problema.

propiedades de base de datos

Agradecemos que quieras añadir valor a nuestro contenido informacional añadiendo tu veteranía en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *