Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a solucionar el problema en el que se produce un error en la sincronización de la replicación de mezcla de SQL Server cuando un artículo de tabla usa un solucionador de conflictos personalizado de procedimiento almacenado.
Versión original del producto: SQL Server 2008 R2, SQL Server 2008, SQL Server 2005
Número de KB original: 2585632
Síntomas
Considere el caso siguiente:
La replicación de mezcla se configura en Microsoft SQL Server 2008 R2, en Microsoft SQL Server 2008 o en Microsoft SQL Server 2005.
La publicación contiene un artículo de tabla.
El artículo de tabla contiene columnas de tipo
varchar
de datos onvarchar
.Nota:
El artículo de tabla puede contener columnas de ambos tipos de datos.
El artículo de tabla también contiene una columna de tipo
decimal
de datos .Nota:
La tabla también puede contener una columna de tipo
numeric
de datos omoney
.Una columna de tipo
uniqueidentifier
de datos que tiene laRowguidcol
propiedad no es la última columna de la tabla. Por ejemplo, una columna del tipodecimal
de datos ,numeric
omoney
se ordena después de launiqueidentifier
columna.Configure el artículo de tabla para usar un solucionador de conflictos personalizado de procedimiento almacenado.
Se detecta un conflicto para el artículo de tabla.
En este escenario, la sincronización puede producir un error durante la resolución de conflictos. Cuando se produce este problema, puede recibir un mensaje de error similar a uno de los siguientes:
Mensaje de error 1
Error en el Agente de mezcla porque el esquema del artículo del publicador no coincide con el del suscriptor. Esto puede suceder cuando hay cambios de DDL pendientes de aplicación en el suscriptor.
Reinicie el Agente de mezcla para aplicar los cambios de DDL y sincronice la suscripción.
Mensaje de error 2
El proceso de combinación no pudo almacenar información de conflicto para el artículo "article_name". Compruebe las propiedades de la publicación para determinar dónde se almacenan los registros de conflictos.
Valor de carácter no válido para la especificación de conversión.
El agente de mezcla notifica estos errores si se produce un error en el trabajo del agente de mezcla.
Causa
Este problema se produce porque los datos devueltos por el solucionador de conflictos personalizado del procedimiento almacenado se convierten incorrectamente en los tipos de datos de SQL Server de las tablas base.
Nota:
El procedimiento almacenado devuelve los datos correctos.
Estado
Microsoft ha confirmado que se trata de un error en los productos de Microsoft que aparecen en la versión original del producto al principio de este artículo.
Solución alternativa 1: Convertir las columnas del tipo de datos varchar en char
Nota:
El mensaje de error que recibe depende de la definición de la tabla. Es posible que tenga que probar las variaciones de estos métodos para solucionar el problema.
Para solucionar este problema, convierta las columnas del tipo de datos al tipo varchar
char
de datos en el código de resolución de conflictos personalizado del procedimiento almacenado.
Solución alternativa 2: Cambiar el orden de columna en la tabla subyacente
Para solucionar este problema, cambie el orden de columna de la tabla subyacente. Por ejemplo, cambie el orden de columna para que la uniqueidentifier
columna que tenga la Rowguidcol
propiedad se ordene después de las columnas del tipo decimal
de datos , numeric
, money
y varchar
.
Nota:
Es posible que tenga que quitar y volver a agregar columnas para cambiar el criterio de ordenación. Además, el problema puede volver a repetirse si agrega columnas más adelante.