Script: Reduce Log File depending on DB Data Files size

For Spanish version visit this link Script: Reducir Log porcentualmente dependiendo del tamaño de los ficheros de Datos
 
A friend asked me about a dynamic script to reduce the DB Log File based on the total size of DB Data Files, here is the answer:
/*--------------------------------------------------------------------------------------
-- File: ShrinkToPercent.sql
-- Author: Fran Lens (http:\\www.lensql.net)
-- Date: 2012-03-27
-- Description: Reduce LogFile Size based on percentage of the Total Size of DataFiles
--------------------------------------------------------------------------------------*/
DECLARE @SelectDB varchar(50)
DECLARE @ShrinkPercent float
DECLARE @DBid int
DECLARE @RecoverySimple varchar(200)
DECLARE @RecoveryFull varchar(200)
DECLARE @ShrinkCommand nvarchar(200)
DECLARE @ShrinkFile varchar(50)
DECLARE @ShrinkValue varchar(50)

SET @SelectDB = 'AdventureWorks2008R2' -- Database whose Log will be Reduced
SET @ShrinkPercent = 30 -- Percentage of the DataFiles Size to Reduce the LogFile
						-- Example: With a value of 20 Percent and 1GB of Datafiles Size, the Log will be reduced to 200MB

SET @DbId= (select database_id from sys.databases where name=@SelectDB)
SET @RecoverySimple = 'ALTER DATABASE [' + @SelectDB + '] SET RECOVERY SIMPLE WITH NO_WAIT' -- Change the recovery model to Simple
SET @ShrinkFile = (SELECT name from sys.master_files WHERE database_id = @DBid and type_desc = 'LOG')
SET @ShrinkValue = (@ShrinkPercent)/100 * (SELECT SUM(size)/128 FROM sys.master_files WHERE database_id = @DBid and type_desc = 'ROWS')
SET @ShrinkCommand = 'USE [' + @SelectDB + ']' + CHAR(13)+ 'DBCC SHRINKFILE('+ @ShrinkFile+',' + @ShrinkValue + ')' -- Reduce the LogFile Size
SET @RecoveryFull = 'ALTER DATABASE [' + @SelectDB + '] SET RECOVERY FULL WITH NO_WAIT' -- Change the recovery model to Full

EXEC (@RecoverySimple)
EXEC sp_executesql @ShrinkCommand
EXEC (@RecoveryFull)

Evento Microsoft: Destino la Nube

 
 
Ayer acudí al evento Destino La Nube de Microsoft, el cual se pudo seguir por Twitter con el Hashtag #CloudDay, si os lo perdisteis próximamente estará en la web Destino la Nube. Al ser mi primer evento Microsoft iba un poco a conocer todo ese mundo y la verdad salí bastante satisfecho, se habló de Windows 8, Windows 8 Server, Windows Azure, SQL Server 2012, Visual Studio 11, Big Data, System Center 2012, PowerShell 3.0, HyperV…
 
Por afinidad con los contenidos opté por quedarme en la parte del evento dedicada a Profesionales TI. A pesar de algún problema técnico puntual con la conexión se mostraron muchas demos con algunas de las nuevas características y funcionalidades de los productos, por la mañana estuvo dedicado a System Center 2012, Nube Privada y Pública y SQL Server 2012, por la tarde las ponencias y demos fueron sobre Windows Server 8, PowerShell 3.0 y en gran parte HyperV, cabe destacar que estas últimas fueron las que más me gustaron tanto por la manera de comunicar de los ponentes como por las demos(con alguna coña incluida que te hacía reír).
 
Como dato negativo tengo que decir que al haber 3 salas distintas, una para cada área, nosotros siempre salíamos los últimos y no pude probar casi ningún canapé :), eso sí, me lleve un bonito llavero, un bolígrafo, un Lanyard (cuelga tarjetas) y unos 2 Kilos de Publicidad de las empresas colaboradoras.
 
En definitiva, el evento me gustó bastante y espero poder volver a acudir en próximos años, y por qué no, en un futuro algo lejano hasta poder ser ponente en alguno.
 
Follow

Get every new post delivered to your Inbox.