Ver Mensaje Individual
  #3  
Antiguo 09-03-2004
orodriguezc orodriguezc is offline
Miembro
 
Registrado: nov 2003
Ubicación: Cartagena - Colombia
Posts: 33
Reputación: 0
orodriguezc Va por buen camino
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.
Responder Con Cita