¿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
Advertisements

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

Cambiar automáticamente el valor de “Max Server Memory” si ocurre un Failover

For English version visit this link Automatic change “Max Server Memory” value if a Failover occurs
 
En uno de nuestros entornos, tenemos un cluster de dos nodos activo-activo con una instancia SQL Server en cada uno.
 Durante esta semana, sufrimos una caida del servicio en uno de los nodos, esto provocó que se realizara un failover al nodo que quedaba disponible. El problema que nos encontramos es que el nodo tenía solamente 25GB de RAM y el valor de “Max Server Memory” asignado a cada instancia era de 20GB, por lo que corriamos el riesgo de que si las dos instancias empezaban a necesitar RAM llegaria un momento que el sistema operativo Windows perdería rendimiento.
  Read more of this post

¿Cómo saber que tablas están replicadas?

For English version visit this link How to know which tables are replicated?
 
A veces es necesario conocer todas las tablas que están replicadas en una BBDD, para ello utiliza estos scripts, ejecutar en la BBDD que este replicada:
--Que tablas están publicadas en Réplica de Mezcla y sus subscriptores
SELECT
b.name AS [Table],
DB_NAME() AS PublisherDB,
a.subscriber_server AS Subscriber,
a.db_name AS SubscriberDB
from sysmergesubscriptions a, sysmergearticles b
where a.pubid=b.pubid
order by a.subscriber_server

--Que tablas están publicadas en Réplica Transaccional y sus subscriptores
SELECT
a.name AS [Table],
is_published AS is_tran_published,
DB_NAME() AS PublisherDB,
c.srvname AS Subscriber,
c.dest_db AS SubscriberDB
FROM sys.tables a
INNER JOIN dbo.sysarticles b ON a.object_id = b.objid
INNER JOIN dbo.syssubscriptions c ON b.artid = c.artid
WHERE is_published = 1