Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Desactivar logs para una BD SQL 2005 Express Edition

Select Lenguaje Query, aqui podras encontrás Consultas coomo Select, Insert, Update...., y mucho mas...

Desactivar logs para una BD SQL 2005 Express Edition

Notapor ZiCruz el Mié May 09, 2007 1:29 am

Hola a tod@s,

haciendo una pruebas en el programa veo que el archivo _log.ldf tiene un tamaño desmesurado, por el nombre que tiene supongo que seran los log de las transacciones para poder realizar recuperaciones de datos.

Como en mi aplicación no es critico el poder recuperar datos anteriores una vez que se ha realizado correctamente la transaccion, y supongo que el mantenimiento de ese log le restara velocidad al procesamiento de la instrucciones, queria saber si es posible desactivar la creacion de logs y como se hace.

Muchas gracias y un saludo.
ZiCruz
Novato
Novato
 
Mensajes: 15
Registrado: Mar Abr 10, 2007 1:35 am

Notapor Willy el Mié May 23, 2007 10:02 am

Hola,

Mira lo que yo hago es depurar cada cierto tiempo este archivo haciendo uso de la siguiente query que baja el tamaño del archivo log

bajar tamaño de archivo de log (Ejecutar vía Query Analyzer)

[color=blue]SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT

-- *** MAKE SURE TO CHANGE THE NEXT 4 LINES WITH YOUR CRITERIA. ***
USE [BaseDatos] -- reemplazar aqui el nombre de la BD
-- cuyo log dese4a recortar
SELECT @LogicalFileName = 'archivo_log', -- Use sp_helpfile to
-- identify the logical file
-- name that you want to shrink.
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 10 -- in MB

-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size -- in 8K pages
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName

CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)

-- Wrap log and truncate it.
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ['+ db_name() + '] WITH TRUNCATE_ONLY'
-- Try an initial shrink.
DBCC SHRINKFILE (@LogicalFileName, @NewSize)

EXEC (@TruncLog)

-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) -- the log has not shrunk
AND (@OriginalSize * 8 /1024) > @NewSize -- The value passed in for new size is smaller than the current size.
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log') -- Because it is a char field it inserts 8000 bytes.
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END -- update
EXEC (@TruncLog) -- See if a trunc of the log shrinks it.
END -- outer loop
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
PRINT '*** Perform a full database backup ***'
SET NOCOUNT OFF
[/color]


Dale una chequeada.

Saludos,
Willy
Novato
Novato
 
Mensajes: 6
Registrado: Mié Abr 28, 2004 1:18 pm


Volver a El lenguaje SQL

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados