Script: Reducir Log porcentualmente dependiendo del tamaño de los ficheros de Datos
2012/03/30 1 Comment
/*-------------------------------------------------------------------------------------- -- File: ShrinkToPercent.sql -- Author: Fran Lens (http:\\www.lensql.net) -- Date: 2012-03-27 -- Description: Reduce el tamaño del fichero de Log en base a un porcentaje del tamaño total de los ficheros de Datos --------------------------------------------------------------------------------------*/ 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' -- Base de Datos cuyo Log será reducido SET @ShrinkPercent = 30 -- Porcentaje de los archivos de datos al que se reducira el Fichero de Log -- Ejemplo: Con un valor del 20 por ciento y 1GB de Tamaño de Ficheros de Datos, el Log se reducirá a 200MB SET @DbId= (select database_id from sys.databases where name=@SelectDB) SET @RecoverySimple = 'ALTER DATABASE [' + @SelectDB + '] SET RECOVERY SIMPLE WITH NO_WAIT' -- Cambiar el modelo de recuperación a 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 + ')' -- Reducir el tamaño del Fichero de Datos SET @RecoveryFull = 'ALTER DATABASE [' + @SelectDB + '] SET RECOVERY FULL WITH NO_WAIT' -- Cambiar el modelo de recuperación a Completo EXEC (@RecoverySimple) EXEC sp_executesql @ShrinkCommand EXEC (@RecoveryFull)
Advertisements