Share via


MSSQL_ENG002601

Detalles del mensaje

Nombre del producto

SQL Server

Versión del producto

10.0

Número de compilación del producto

 

Id. de evento

2601

Origen del evento

MSSQLSERVER

Componente

SQL Server Database Engine (Motor de base de datos de SQL Server)

Nombre simbólico

N/D

Texto del mensaje

No se puede insertar una fila de clave duplicada en el objeto '%.*ls' con índice único '%.*ls'.

Explicación

Éste es un error general que se puede producir con independencia de si se replica una base de datos. En las bases de datos replicadas, el error normalmente se produce porque las claves principales no se han administrado de forma correcta en la topología. En un entorno distribuido es esencial asegurarse de no insertar el mismo valor en una columna de clave principal o en cualquier otra columna única de más de un nodo. Entre las posibles causas figuran las siguientes:

  • se producen inserciones y actualizaciones de una fila en más de un nodo. Tanto la réplica de mezcla como las suscripciones actualizables para réplica transaccional proporcionan detección y resolución de conflictos, pero sigue siendo preferible insertar o actualizar una fila determinada en un solo nodo. La réplica transaccional de punto a punto no proporciona detección y resolución de conflictos, sino que requiere que las inserciones y actualizaciones tengan particiones.

  • Se ha insertado una fila en un suscriptor que debe ser de sólo lectura. Los suscriptores de publicaciones de instantáneas deben ser tratados como de sólo lectura, al igual que los suscriptores de publicaciones transaccionales, a menos que se utilicen suscripciones actualizables o réplica transaccional de punto a punto.

  • Se está utilizando una tabla con una columna de identidad, pero la columna no está correctamente administrada.

  • En la replicación de mezcla, este error puede producirse también durante una inserción en la tabla del sistema MSmerge_contents; el error que se produce es similar al siguiente: No se puede insertar una fila de clave duplicada en el objeto 'MSmerge_contents' con índice único 'ucl1SycContents'.

Acción del usuario

La acción que debe llevarse a cabo depende del motivo por el que se produjo el error:

  • se producen inserciones y actualizaciones de una fila en más de un nodo.

    Independientemente del tipo de réplica utilizada, se recomienda realizar particiones de las inserciones y actualizaciones siempre que sea posible, ya que así se reduce el procesamiento necesario para la detección y resolución de conflictos. En la réplica transaccional de punto a punto, es necesario hacer particiones de las inserciones y actualizaciones. Para obtener más información, vea Replicación transaccional del mismo nivel.

  • Se ha insertado una fila en un suscriptor que debe ser de sólo lectura.

    No inserte ni actualice filas en el suscriptor a menos que esté utilizando la réplica de mezcla, la réplica transaccional con suscripciones actualizables o la réplica transaccional de punto a punto.

  • Se está utilizando una tabla con una columna de identidad, pero la columna no está correctamente administrada.

    En la réplica de mezcla y la réplica transaccional con suscripciones actualizables, las columnas de identidad deben administrarse automáticamente mediante la réplica. En la réplica transaccional de punto a punto, es necesario administrarlas manualmente. Para obtener más información, vea Replicar columnas de identidad.

  • El error se produce durante una inserción en la tabla del sistema MSmerge_contents.

    Este error se puede producir debido a un valor incorrecto de la propiedad del filtro de combinación join_unique_key. Esta propiedad debe definirse como TRUE sólo si la columna combinada de la tabla primaria es única. El error se produce si la propiedad se define como TRUE pero la columna no es única. Para obtener más información acerca de cómo configurar esta propiedad, vea Cómo definir y modificar un filtro de combinación entre artículos de mezcla (SQL Server Management Studio) y Cómo definir y modificar un filtro de combinación entre artículos de mezcla (programación de la replicación con Transact-SQL).