Ale*_*gas 47 t-sql indexing sql-server-2005 unique-index
我在运行以下Transact-SQL命令时遇到错误:
CREATE UNIQUE NONCLUSTERED INDEX IX_TopicShortName
ON DimMeasureTopic(TopicShortName)
Run Code Online (Sandbox Code Playgroud)
错误是:
消息1505,级别16,状态1,行1 CREATE UNIQUE INDEX语句终止,因为找到了对象名称'dbo.DimMeasureTopic'和索引名称'IX_TopicShortName'的重复键.重复键值为().
当我运行SELECT * FROM sys.indexes WHERE name = 'IX_TopicShortName'或SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[DimMeasureTopic]')IX_TopicShortName索引不显示时.所以似乎没有重复.
我在另一个数据库中有相同的模式,可以在那里创建没有问题的索引.任何想法为什么它不会在这里创造?
mar*_*ton 89
并不是索引已经存在,而是TopicShortName表中的字段有重复值.根据错误消息,重复值是一个空字符串(它可能只是发布的一个方面我猜).这样的重复可以防止创建UNIQUE索引.
您可以运行查询以确认您有重复:
SELECT
TopicShortName,
COUNT(*)
FROM
DimMeasureTopic
GROUP BY
TopicShortName
HAVING
COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)
据推测,在其他数据库中,数据不同,并且不存在重复数据.
Don*_*yrd 12
副本位于您的数据中,尝试运行此查询以查找它.
SELECT TopicShortName, COUNT(*)
FROM DimMeasureTopic
GROUP BY TopicShortName
HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您使用基于代码的迁移,并且重命名实体的属性并且该属性具有唯一索引,则实体框架将创建一个新列并尝试为新列添加唯一索引,但新列具有所有空值,因此它将失败。您需要手动修改迁移代码以从创建索引的行之前的旧列中复制数据。
| 归档时间: |
|
| 查看次数: |
49008 次 |
| 最近记录: |