Hola gente como va!, hoy vamos a tratar sobre una particularidad del comportamiento de MS SQL Server 2005 relacionado al transaction log.
Intentaron llenar el transaction log de una base configurada con ‘recovery model full’ ?, a simple vista no existirían inconvenientes para hacerlo, bueno, es aquí donde a nosotros se nos planteo un problema, pues intentamos llenar el transaction log para que nos dispare una alerta cuando llegaba al umbral del 80% de factor de llenado y no podíamos superar el umbral de +- 65% del factor de llenado, el código ejecutado fue el siguiente:
BEGIN TRY
SELECT GETDATE()
WHILE 1=1
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
INSERT INTO MiTabla VALUES ('PEPEPEPEPEPEPPPPPPPPPPPPPEEPEPEPEPEPEPEPE',GETDATE())
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() as ErrorNumber,GETDATE() as diahora,
ERROR_MESSAGE() as ErrorMessage
END CATCH
GO
Bueno, capaz que ya adivinaron donde estaba el factor clave, pero para los que no,les paso a detallar:
Cuando configuramos una base de datos en ‘recovery model full’, no lo asume de inmediato, es decir, actúa como si estuviera configurada con el modelo de ‘recovery simple’ o como se llamaba en otras versiones 'truncate log on checkpoint' debido a que chequea un registro interno donde figura que se tomo un backup full de la base de datos, en otras palabras, comenzará a funcionar una vez que tomemos backup full de la base por ej: BACKUP DATABASE mibase TO mibase_backup WITH INIT.
Y como siempre les mando un abrazo virtual a todos !.
JuanPL
Link's relacionados:
http://www.todosql.com/blog/200706/log-transaccional-en-sql-server-2005-...
http://www.todosql.com/blog/200705/mirror-y-log-transaccional-en-sql-ser...