El mensaje de error “The merge process was unable to deliver the snapshot to the Subscriber” en la ejecución del Agente de Mezcla de SQL Server, es uno de esos típicos mensajes frustrantes, que poco nos ayudan en el diagnóstico de lo que está ocurriendo, al menos la primera vez, cuando nos pilla que aún no lo conocemos.
En nuestro caso de ejemplo, intentamos depurar la ejecución del Agente de Mezcla para obtener más información, recogimos los siguientes mensajes:
- Message: The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.
- Message: No se puede buscar el objeto 'MSmerge_ctsv_AF3426E510A24D54B229D3EE0F298718' porque no existe o el usuario no tiene permiso.
El último mensaje, en inglés sería algo así:
- Message: Cannot find the objet 'MSmerge_ctsv_AF3426E510A24D54B229D3EE0F298718' because it does not exists or you do not have permission.
Tras varias acciones de troubleshooting, detectamos que el nombre del Suscriptor había cambiado. Es decir, si inicialmente el Suscriptor tenía un nombre de máquina GuillePC, había sido reinstalado con otro nombre, digamos GuillePC2. A nivel de resolución DNS, tanto el nombre GuillePC como GuillePC2 resuelven a la misma IP. La Réplica estaba configurada utilizando GuillePC como nombre del servidor, sin embargo, al ejecutar un SELECT @@SERVERNAME se devolvía GuillePC2. Este es un problema muy importante con la Réplica.
Solución: Eliminar la Publicación y Suscripción (generando previamente los Scripts para poder volver a crearla), tanto en el Publicador como en el Suscriptor, para seguidamente crear la Publicación y Suscripción de nuevo (generando la Instantánea). En este caso, la Publicación sólo tenía una Suscripción. En caso contrario, podríamos haber eliminado sólo la Suscripción. Adicionalmente, tras eliminar la Publicación y Suscripción, es recomendable (como regla general) eliminar la Replicación de la Base de Datos del Suscriptor utilizando el procedimiento sp_removedbreplication.
Realizado esto, la Sincronización de esta Suscripción comenzó a funcionar correctamente de nuevo.
|