Compartir a través de


Se produce un error en la sincronización de la replicación de mezcla de SQL Server cuando un artículo usa un solucionador de conflictos personalizado de procedimiento almacenado

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 o nvarchar.

    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 decimalde datos .

    Nota:

    La tabla también puede contener una columna de tipo numeric de datos o money.

  • Una columna de tipo uniqueidentifier de datos que tiene la Rowguidcol propiedad no es la última columna de la tabla. Por ejemplo, una columna del tipo decimalde datos , numerico money se ordena después de la uniqueidentifier 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 varcharchar 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 decimalde datos , numeric, moneyy 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.