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