MSSQLSERVER_1505

Nuevo: 17 de noviembre de 2008

Detalles

Nombre del producto

SQL Server

Versión del producto

9.0

Número de compilación del producto

9.00.1399.60

Identificador de evento

1505

Origen del evento

MSSQLSERVER 

Componente

SQLEngine

Nombre simbólico

Texto del mensaje

La instrucción CREATE UNIQUE INDEX terminó porque se encontró una clave duplicada para el nombre de objeto '%.*ls' y el nombre de índice '%.*ls'. El valor de la clave duplicada es %ls.

Explicación

Este error se produce cuando se intenta crear un índice único y más de una fila de la tabla contiene el valor duplicado especificado. Un índice único se crea al crear un índice y especificar la palabra clave UNIQUE, o cuando se crea una restricción UNIQUE. La tabla no puede contener ninguna fila que tenga valores duplicados en las columnas definidas en el índice o restricción.

Considere los datos de la siguiente tabla Employee:

LastName FirstName JobTitle HireDate

Walters

Rob

Senior Tool Designer

2004-11-19

Brown

Kevin

Marketing Assistant

NULL

Brown

Jo

Design Engineer

NULL

Walters

Rob

Tool Designer

2001-08-09

No se puede crear un índice único en las combinaciones de columna LastName o LastName, FirstName debido a los valores duplicados en las filas.

Menos obvio resulta el potencial de una infracción de unicidad en la columna HireDate. A efectos de índices, los valores NULL son comparables a igual. Por lo tanto, no se puede crear un índice único ni una restricción, si los valores de clave son NULL en más de una fila. Dados los datos anteriores, no se puede crear un índice único en las combinaciones de columnas HireDate o LastName, HireDate.

El mensaje de error 1505 devuelve la primera fila que infringe la restricción de unicidad. Puede haber otras filas duplicadas en la tabla. Para encontrar todas las filas duplicadas, consulte la tabla especificada y use las cláusulas GROUP BY y HAVING para notificar las filas duplicadas. Por ejemplo, en la siguiente consulta se devuelven las filas de la tabla Employee que tengan duplicados el nombre y el apellido.

SELECT LastName, FirstName, count(*) FROM dbo.Employee GROUP BY LastName, FirstName HAVING count(*) > 1;

Acción del usuario

Considere las soluciones siguientes:

  • Agregar o quitar columnas de la definición de índice o restricción para crear un índice compuesto único. En el ejemplo anterior, puede que al agregar una columna o restricción MiddleName a la definición de índice se resuelva el problema de duplicación.
  • Seleccione columnas que se hayan definido como NOT NULL al elegir columnas para un índice único o una restricción UNIQUE. De esta forma se impide que se ocasione una infracción de unicidad cuando más de una fila contiene NULL en los valores de clave.
  • Si los valores duplicados son consecuencia de errores de entrada de datos, corrija manualmente los datos y cree el índice o la restricción. Para obtener información acerca de cómo quitar filas duplicadas en una tabla, vea el artículo de Knowledge Base article 139444: Cómo quitar las filas duplicadas de una tabla de SQL Server.

Vea también

Otros recursos

CREATE INDEX (Transact-SQL)
Crear índices únicos
Cómo crear restricciones UNIQUE (Visual Database Tools)
Crear y modificar restricciones UNIQUE

Ayuda e información

Obtener ayuda sobre SQL Server 2005