Cita:
Empezado por smarcet
Me gustaría que me comentaras como activas la opcion de auto truncamiento.
|
La forma que conozco para activar la opción de autotruncamiento es la siguiente:
En el "SQL Server Enterprise Manager" seleccionas tu base de datos. Haces click derecho y del menu contextual seleccionas "Propiedades". Esto te muestra las propiedades de tu Base de datos. Aqui seleccionas la página Opciones y activas la casilla que dice "Truncar registro en punto de Comprobación".
Se que también se puede establecer esta opción mediante Stored procedure, pero nunca lo he hecho.
Por otra parte pido excusas a los miembros del club porque pude resolver mi problema y olvide comentarles como lo solucioné
. Bueno después de varias horas de estar navegando por muchisimos sitios en la web encontré el siguiente código (disculpen los moderadores pero olvide el link de la pagina):
Código:
SET NOCOUNT ON
DECLARE @NombreLogicoArchivo sysname,
@MaxMinutos INT,
@NuevoTamano INT
/* Indique aquí su configuración. */
-- Nombre de la base de datos para el que se va a truncar el registro
USE baandb
-- Use sp_helpfile para identificar el nombre de archivo lógico
-- que desea reducir.
set @NombreLogicoArchivo = 'baandblog'
-- Límite de tiempo permitido para dar la vuelta al registro.
set @MaxMinutos = 10
set @NuevoTamano = 500 -- en MB
-- Configuración e inicio
DECLARE @TamanoOriginal int
SELECT @TamanoOriginal = size -- en páginas de 8 KB
FROM sysfiles
WHERE name = @NombreLogicoArchivo;
SET ' El tamaño original del registro de ' +
db_name() + ' es ' +
CONVERT(VARCHAR(30),@TamanoOriginal) +
' páginas de 8 KB ó ' +
CONVERT(VARCHAR(30),(@TamanoOriginal *8/1024)) + 'MB'
FROM sysfiles
WHERE name = @NombreLogicoArchivo;
CREATE TABLE DummyTrans(DummyColumna char (8000) not null)
-- Dar la vuelta al registro y truncarlo.
DECLARE @Contador INT;
DECLARE @HoraInicio DATETIME;
DECLARE @TruncReg VARCHAR(255);
SET @HoraInicio = GETDATE();
SET @TruncReg = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
-- Intentar una reducción inicial.
DBCC SHRINKFILE (@NombreLogicoArchivo, @NuevoTamano)
EXEC (@TruncReg)
-- Dar la vuelta al registro, si es necesario.
-- no se ha excedido el máximo tiempo establecido
WHILE @MaxMinutos > DATEDIFF (mi, @HoraInicio, GETDATE())
-- no se ha reducido el registro
AND @TamanoOriginal = (SELECT size FROM sysfiles
WHERE name = @NombreLogicoArchivo)
-- El valor pasado para el tamaño nuevo es más pequeño que el tamaño actual.
AND (@TamanoOriginal * 8 /1024) > @NuevoTamano
BEGIN -- Bucle externo.
SELECT @Contador = 0 WHILE ((@Contador < @TamanoOriginal / 16) AND (@Contador < 50000))
BEGIN -- Actualización
-- Como es un campo de tipo char, inserta 8000 bytes.
INSERT DummyTrans VALUES ('Llenar registro')
DELETE DummyTrans
SELECT @Contador = @Contador + 1
END -- Actualización Probar si un truncamiento reduce de tamaño el registro.
EXEC (@TruncReg)
END -- Bucle externo
SELECT ' El tamaño final del registro de ' +
db_name() + ' es de ' + CONVERT(VARCHAR(30),size) +
' páginas de 8 KB ó ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @NombreLogicoArchivo
DROP TABLE DummyTrans
PRINT '*** RECUERDE: DEBE REALIZAR UNA COPIA DE SEGURIDAD COMPLETA DE LA BASE DE DATOS***'
SET NOCOUNT OFF
Es posible que se requiera ejecutar este scripts varias veces hasta obtener el tamaño del LOG deseado. Espero le sirva a alguien.
Hasta luego.