Script: Reducir Log porcentualmente dependiendo del tamaño de los ficheros de Datos

For English version visit this link Script: Reduce Log File depending on DB Data Files size
 
Un amigo me pregunto por un script dinámico para reducir el Log de una BBDD dependiendo del tamaño total de los ficheros de datos, aquí la respuesta:
/*--------------------------------------------------------------------------------------
-- 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)

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)

Error al actualizar tabla con columna rowguid

For English version visit this link Error updating table with rowguidcol
 
En uno de nuestros entornos, tenemos dos BBDD SQL Server 2008 R2 alineadas entre si por replica Peer to Peer, y a su vez cada BBDD tiene creada una replicación de Mezcla con varios subscriptores.
 
Cuando tratamos de realizar un update en un artículo/tabla que está en la publicación de Mezcla y en la publicación Peer to Peer nos muestra el siguiente error:
  Read more of this post

Error updating table with rowguidcol

For Spanish version visit this link Error al actualizar tabla con columna rowguid
 
In one of our environments, we have two SQL Server 2008 R2 DB aligned together by Peer to Peer replication, and each of the databases have a Merge replication with multiple subscribers.
 
When we try to make an update on a article/table that is published in Merge and Peer to Peer shows this error:
  Read more of this post

Hello World

Welcome to LenSQL,
 
At first I want to introduce me, im 23 years old, I work as SQL Server DBA,  have little experience (two years) and just pass the SQL Server 2008 Administration MCTS certification, im currently working for Avanade on a project with much of replication.
 
I wanna do a blog since a time ago to expose my day to day and help others as much as possible, therefore, I hope that this is the first post of many, and that this blog will be a reflection of my improvement as a technician.
 
Thanks
Fran Lens

Hola Mundo

Bienvenidos a LenSQL,
 
en primer lugar me presento, tengo 23 años, soy administrador de BBDD SQL Server, tengo poca experiencia (unos dos años) y acabo de aprobar la certificación MCTS de Administración SQL Server 2008, actualmente trabajo para Avanade en un proyecto con gran parte de Replicación.
 
Llevaba tiempo queriendo hacer un blog para exponer mi día a día y ayudar a los demás en todo lo posible, por eso, espero que esta sea la primera entrada de muchas, y que este blog sea un fiel reflejo de mi mejora como técnico.
 
Gracias
Fran Lens