Domanda

Ricevo un errore eseguendo il seguente comando Transact-SQL:

CREATE UNIQUE NONCLUSTERED INDEX IX_TopicShortName
ON DimMeasureTopic(TopicShortName)

L'errore è:

  

Msg 1505, livello 16, stato 1, riga 1   L'istruzione CREATE UNIQUE INDEX   terminata perché una chiave duplicata era   trovato per il nome dell'oggetto   'Dbo.DimMeasureTopic' e l'indice   nome 'IX_TopicShortName'. Il   duplicare valore della chiave è ().

Quando eseguo SELECT * FROM sys.indexes WHERE name = 'IX_TopicShortName' o SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[DimMeasureTopic]') l'indice IX_TopicShortName non viene visualizzata. Così non sembra essere un duplicato.

Ho lo stesso schema in un altro database e può creare l'indice, senza problemi lì. Tutte le idee perché non creerà qui?

È stato utile?

Soluzione

Non è che l'indice già esiste, ma che ci sono valori duplicati del campo TopicShortName nella tabella stessa. Secondo il messaggio di errore il valore duplicato è una stringa vuota (potrebbe essere solo un aspetto di distacco immagino). Tali duplicati impedire la creazione di un indice UNIQUE.

È possibile eseguire una query per confermare che si dispone di un duplicato:

SELECT
    TopicShortName,
    COUNT(*)
FROM
    DimMeasureTopic
GROUP BY
    TopicShortName
HAVING
    COUNT(*) > 1

Presumibilmente nella altro database i dati sono diversi, e i duplicati non sono presenti.

Altri suggerimenti

Il duplicato è nei dati, provare a eseguire la query per trovarlo.

SELECT TopicShortName, COUNT(*)
FROM DimMeasureTopic
GROUP BY TopicShortName
HAVING COUNT(*) > 1

E 'perché avete record della tabella già che non sono unici (dai suoni di esso, 2 record con un valore vuoto nel campo TopicShortName).

Quindi, è a che fare con i dati, non l'indice stesso.

Se si utilizza migrazioni basati su codice, e si rinomina una proprietà di un'entità e si stanno avendo un indice univoco per il quadro di proprietà, un'entità creerà una nuova colonna e cercando di aggiungere un indice univoco per la nuova colonna, ma la nuova colonna ha tutti i valori nulli, pertanto sarà sicuro. È necessario modificare manualmente il codice di migrazione per copiare i dati dal vecchio colonna prima la linea per creare l'indice.

E 'avrebbe dovuto precisare il valore della chiave duplicata nel messaggio di errore. "Il valore chiave duplicata è ( ' ' '','') L'istruzione è stata terminata. Hai valori duplicati che devono essere affrontati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top