Compartir a través de


MSSQL_ENG002601

Detalles del mensaje

Nombre del producto SQL Server
Id. del evento 2601
Origen del evento MSSQLSERVER
Componente Motor de base de datos de SQL Server
Nombre simbólico No disponible
Texto del mensaje No se puede insertar una fila de clave duplicada en el objeto '%.*ls' con el índice único '%.*ls'.

Explicación

Se trata de un error general que se puede generar independientemente de si se replica una base de datos. En las bases de datos replicadas, el error suele producirse porque las claves principales no se han administrado correctamente en toda la topología. En un entorno distribuido, es esencial asegurarse de que el mismo valor no se inserta en una columna de clave principal ni en ninguna otra columna única en más de un nodo. Entre las posibles causas figuran:

  • Las inserciones y actualizaciones de una fila se producen en más de un nodo. La replicación de combinación y las suscripciones actualizables para la replicación transaccional ofrecen detección y resolución de conflictos, pero sigue siendo preferible insertar o actualizar un registro específico en un solo nodo. Las transacciones punto a punto no proporcionan detección ni resolución de conflictos; requieren que las inserciones y actualizaciones se particionen.

  • Se insertó una fila en un suscriptor que debe ser de solo lectura. Los suscriptores a las publicaciones de instantáneas deben considerarse como de solo lectura, al igual que los suscriptores a publicaciones transaccionales, a menos que se usen suscripciones actualizables o replicación transaccional punto a punto.

  • Se usa una tabla con una columna de identidad, pero la columna no se administra correctamente.

  • En la replicación por mezcla, este error también puede producirse durante una inserción en la tabla del sistema MSmerge_contents; el error generado es similar a: No se puede insertar una fila con clave duplicada en el objeto "MSmerge_contents" con el índice único "ucl1SysContents".

Acción del usuario

La acción necesaria depende del motivo por el que se produjo el error:

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

    Independientemente del tipo de replicación usado, se recomienda particionar inserciones y actualizaciones siempre que sea posible, ya que esto reduce el procesamiento necesario para la detección y resolución de conflictos. Para la replicación transaccional punto a punto, se requieren inserciones de particiones y actualizaciones. Para obtener más información, consulte Replicación transaccional entre pares.

  • Se insertó una fila en un Suscriptor que debía ser de solo lectura.

    No inserte ni actualice las filas en el Suscriptor a menos que use la replicación de mezcla, la replicación transaccional con suscripciones actualizables o la replicación transaccional punto a punto.

  • Se usa una tabla con una columna de identidad, pero la columna no se administra correctamente.

    Para la replicación de mezcla y la replicación transaccional con suscripciones actualizables, las columnas de identidad deben ser gestionadas automáticamente por la replicación. Para la replicación transaccional de igual a igual, deben administrarse 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 puede producirse debido a un valor incorrecto para la propiedad de filtro de combinación join_unique_key. Esta propiedad debe establecerse en TRUE solo si la columna combinada de la tabla primaria es única. Si la propiedad se establece en TRUE, pero la columna no es única, se produce este error. Para obtener más información sobre cómo establecer esta propiedad, vea Definir y modificar un filtro de fusión entre artículos de fusión.

Véase también

Referencia de errores y eventos (replicación)