小编典典

如何查找哪些外键引用表上的索引

sql

我有一个非聚集索引要删除(它是聚集索引的副本)。但是,外键约束正在使用它。我希望能够确定哪个约束正在使用索引,因此我可以对其进行更新以使用主键索引。

当我尝试删除它时:

DROP INDEX [idx_duplicate] ON [dbo].[MyTable]

我收到一个错误:

不允许在索引’dbo.MyTable.idx_duplicate’上使用显式的DROP INDEX。它被用于FOREIGN KEY约束实施。

我尝试通过以下查询找到罪魁祸首,但没有运气:

SELECT name
FROM sys.foreign_keys
WHERE OBJECT_NAME (referenced_object_id) = 'idx_duplicate'

阅读 157

收藏
2021-03-23

共1个答案

小编典典

就像是

Select
    f.name,
    object_name(f.parent_object_id)
From
    sys.foreign_keys f
        inner join
    sys.indexes i
        on f.referenced_object_id = i.object_id and
           f.key_index_id = i.index_id
Where
    i.name = 'idx_duplicate' and
    i.object_id = object_id('[dbo].[MyTable]')
2021-03-23