Compartir a través de


MSSQL_ENG002601

Detalles del mensaje

Nombre del producto

SQL Server

Versión del producto

9.0

Número de compilación del producto

9.00.1399.60

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 suele producirse cuando las claves principales no se han administrado adecuadamente en la topología. En un entorno distribuido es fundamental asegurarse de que no se inserta el mismo valor en una columna de clave principal o en otra columna única en más de un nodo. Entre las posibles causas figuran:

  • Se están llevando a cabo inserciones y actualizaciones en una fila en más de un nodo. Tanto la réplica de mezcla como las suscripciones actualizables de la réplica transaccional ofrecen detección y resolución de conflictos, aunque es preferible insertar o actualizar una fila concreta sólo en un nodo. La réplica transaccional de punto a punto no ofrece detección y resolución de conflictos; exige que las inserciones y las actualizaciones estén divididas en particiones.
  • Se ha insertado una fila en un suscriptor que debería ser de sólo lectura. Los suscriptores de publicaciones de instantáneas deben tratarse 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 réplica 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 a: "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 están llevando a cabo inserciones y actualizaciones en una fila en más de un nodo.
    Independientemente del tipo de réplica utilizada, se recomienda que, siempre que sea posible, las inserciones y las actualizaciones se dividan en particiones, ya que esto reduce el procesamiento necesario para la detección y resolución de conflictos. En la réplica transaccional de punto a punto, se exige dividir en particiones las inserciones y las actualizaciones. Para obtener más información, vea Réplica transaccional de punto a punto.
  • Se ha insertado una fila en un suscriptor que debería ser de sólo lectura.
    No inserte ni actualice filas en el suscriptor a menos que esté utilizando réplica de mezcla, réplica transaccional con 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 réplica de mezcla y la réplica transaccional con suscripciones actualizables, las columnas de identidad deben ser administradas automáticamente por 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 How to: Define and Modify a Join Filter Between Merge Articles (Replication Transact-SQL Programming).

Vea también

Conceptos

Causa y resolución de errores de réplica

Ayuda e información

Obtener ayuda sobre SQL Server 2005