编写查询以检查索引是否不是唯一的,并发送警报



在用户数据库中的SQL Server 2008R2中,仅在一个表中有一个索引,该索引从唯一的索引随机变为非唯一。每次发生时,我都希望获得警报。这样做的更好的方法是什么?

您可以查询系统表sys.indexes:列is_unique显示1如果索引是唯一的,则0,如果不是。

SELECT name, is_unique
FROM sys.indexes
WHERE name = ?

nb:对于集群列store索引, is_unique始终等于0。

您可以使用

SELECT name,
       is_unique
FROM Sys.Indexes
WHERE name = 'indexname'

更好

IF NOT EXISTS(SELECT 1 FROM Sys.Indexes WHERE Name = 'IndexName' AND is_unique = 1)
  BEGIN
    PRINT'Do the job' --The index is not unique, do what you want
  END
    ELSE --You can just remove the else part if you don't need to do anything
      PRINT 'IsUnique, do nothing'

最新更新