Error instalando Nodo de Cluster SQL Server 2008 R2

For English version visit this link Error installing Node of SQL Server 2008R2 Cluster
 
Esta semana, estamos migrando los servidores de Producción a SQL Server 2008 R2 SP1. Durante la instalación de un Nodo del Cluster SQL Server nos apareció el siguiente error:
 
 
Error reading from file:
X:\PATHFOLDER\x64\setup\sql_engine_core_inst_msi\PFiles\SqlServr\MSSQL.X\MSSQL\Binn\Template\master.mdf
Verify that the file exists and that you can access it.
 
Después de hacer diversas pruebas, nos dimos cuenta que no podiamos copiar ficheros .mdf, .ndf, .ldf y .bak al disco C:\, empezamos a mirar los permisos de los usuarios, políticas, permisos de ficheros y no lo conseguíamos, por lo que después de 3 horas decidimos dejarlo. A la mañana siguiente a un compañero se le ocurrió que podía ser por el antivirus, lo desactivamos y funcionó a la primera.
 
Esta es una muestra de como un pequeño fallo de cálculo imprevisto te puede hacer pasar un mal rato Una cosa si que es segura, de ahora en adelante ante el mas mínimo error extraño, lo primero que probaré es a desactivar el antivirus.
 

¿Qué he aprendido en el último año? Recursos y webs que te ayudarán a comenzar con SQL Server

For English version visit this link What I learned in the last year? Resources and websites that help you get started with SQL Server
 
En unos días, el 20 de Junio, cumplo un año en Avanade Spain, por ello creo que es un buen momento para pararme a pensar y reflexionar sobre todo lo que he aprendido en los últimos 366 días.
 
Puedo afirmar con seguridad que este ha sido el año que mas he crecido como profesional de SQL Server. Cuando comencé en la empresa, no conocía prácticamente como funcionaba un cluster; la replicación me parecía un mundo aparte; no estaba familiarizado con el scripting de SQL Server y mi nivel de inglés era bastante peor (podéis ver lo mal que escribo, pero sí, antes era aún peor).
 
Los nuevos conocimientos los he adquirido en gran parte gracias a mi padre, mis compañeros de trabajo, Google, los foros de MSDN, y blogs que me han salvado la vida en multitud de ocasiones, paso a enumerar algunos de ellos:
  Read more of this post

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)

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

El proceso de mezcla no pudo crear una nueva generación en ‘Publisher’

For English version visit this link The merge process was unable to create a new generation at the ‘Publisher’
 
Ayer realizamos un update masivo de 1 millón de registros en una tabla de la BBDD de réplica, después del update, hicimos que un equipo replicara, y vimos que en la primera publicación fallaba después de unos 2000 segundos, dándonos el siguiente error:
 
“El proceso de mezcla no pudo crear una nueva generación en ‘Publisher’. Para solucionar el problema, reinicie la sincronización con registro de historial detallado y especifique un archivo de salida para escribir en él.” 
  Read more of this post

Proceso de marcha atrás para una migración fallida de Instancia en Cluster SQL Server

For English version visit this link Rollback process for a failed SQL Server Cluster Instance migration
 
Pongamos un caso práctico en el que haya que migrar una instancia SQL Server de producción que esta en un Cluster Windows Server 2003 a un Cluster Windows Server 2008.
 
 Uno de los primeros pasos cuando migramos es apagar el servicio de Cluster SQL y borrar el nombre del Cluster SQL del directorio activo, puesto que sino el Cluster Windows Server 2008 que creemos encontrará un nombre duplicado cuando intente crear el Cluster SQL, aquí nos encontraremos con un problema si en mitad de la migración hubiera que dar marcha atrás puesto que el servicio SQL Server en el Cluster Windows Server 2003 no iniciaría.
  Read more of this post