Compartir a través de


MSSQL_ENG002627

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

2627

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

Infracción de la restricción '%.*ls'. No se puede insertar una fila de clave duplicada en el objeto '%.*ls'.

Explicación

Se trata de un error general que puede producirse independientemente de que la base de datos esté replicada o no. 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 ésta no está correctamente administrada.

Acción del usuario

La acción necesaria depende del motivo por el que se haya producido 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, se deben administrar de forma manual. Para obtener más información, vea Replicar columnas de identidad.

Vea también

Conceptos

Causa y resolución de errores de réplica

Otros recursos

Información general sobre la réplica de mezcla
Réplica transaccional de punto a punto
Suscripciones actualizables para réplica transaccional

Ayuda e información

Obtener ayuda sobre SQL Server 2005