I'm getting an error running the following Transact-SQL command:
CREATE UNIQUE NONCLUSTERED INDEX IX_TopicShortName ON DimMeasureTopic(TopicShortName)
The error is:
Msg 1505, Level 16, State 1, Line 1 The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.DimMeasureTopic' and the index name 'IX_TopicShortName'. The duplicate key value is ().
When I run SELECT * FROM sys.indexes WHERE name = 'IX_TopicShortName'
or SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[DimMeasureTopic]')
the IX_TopicShortName index does not display. So there doesn't appear to be a duplicate.
I have the same schema in another database and can create the index without issues there. Any ideas why it won't create here?
Yes, you can create a clustered index on key columns that contain duplicate values.
You can prevent duplicate values in a field in an Access table by creating a unique index. A unique index is an index that requires that each value of the indexed field is unique.
The syntax to create an index in SQL is: CREATE [UNIQUE] INDEX index_name ON table_name (column1, column2, ... column_n); UNIQUE.
Composite Indexes A composite index is an index on two or more columns of a table. Its basic syntax is as follows. CREATE INDEX index_name on table_name (column1, column2);
It's not that the index already exists, but that there are duplicate values of the TopicShortName
field in the table itself. According to the error message the duplicate value is an empty string (it might just be a facet of posting I guess). Such duplicates prevent the creation of a UNIQUE
index.
You could run a query to confirm that you have a duplicate:
SELECT TopicShortName, COUNT(*) FROM DimMeasureTopic GROUP BY TopicShortName HAVING COUNT(*) > 1
Presumably in the other database the data are different, and the duplicates are not present.
The duplicate is in your data, try running this query to find it.
SELECT TopicShortName, COUNT(*) FROM DimMeasureTopic GROUP BY TopicShortName HAVING COUNT(*) > 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With