Resucitar Agente SQL Server después de reparar una instancia

For English version visit this link Resurrect SQL Server Agent after repair an instance
 
Después de una actualización fallida desde SQL Server 2005 a SQL Server 2008 R2 SP1, decidí usar la opción de Repair del instalador de SQL Server, el recurso SQL Server se reparó correctamente, pero el de SQL Server Agent no conseguia iniciarlo.
 
 
Read more of this post

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)

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.
 

Scripts: Jobs Not Executed in the Last Year / Job Activity Details

For Spanish version visit this link Scripts: Jobs no ejecutados en el último año / Actividad de Jobs Detallada
 
A few days ago i was looking for a script to let me know when was the last execution of a job, so I can review the jobs that were not executed in the last year and delete the ones not needed, but i couldn’t find anything valid, so i had to create one.
 
 I use the columns last_run_date and last_run_time from sysjobservers table to get this value, the scripts that i found on Internet used other columns from other tables which i will describe why i not chose:
 
Read more of this post

Scripts: Jobs no ejecutados en el último año / Actividad de Jobs Detallada

For English version visit this link Scripts: Jobs Not Executed in the Last Year / Job Activity Details
 
Hace unos días estuve buscando un script que me permitiera saber cuando fue la última ejecución de un job, para así poder revisar los jobs que llevaran más de 1 año sin ejecutarse y poder borrar los que no fueran necesarios, pero no encontré lo que buscaba por lo que tuve que crear uno.
 
He usado las columnas last_run_date y last_run_time de la tabla sysjobservers para sacar este dato, los scripts que encontré por Internet usaban otras columnas de otras tablas que paso a describir por qué no las elegí:
 
Read more of this post

The merge process was unable to create a new generation at the ‘Publisher’

For Spanish version visit this link El proceso de mezcla no pudo crear una nueva generación en ‘Publisher’
 
Yesterday we did an massive update of 1 million of registers in a table of the replication DB, after the update , we started the replication of one computer, and we saw a failure in the first publication after 2000 seconds, showing the next error:
 
“The merge process was unable to create a new generation at the ‘Publisher’. Troubleshoot by restarting the synchronization with verbose history logging and specify an output file to which to write.”
 
Read more of this post