【发布时间】:2017-11-20 16:35:27
【问题描述】:
查询以使用 sql 从数据库中的所有表中提取所有唯一索引。输出应显示架构名称、表名称和列名称。
我尝试了以下查询:
SELECT
t.[name] AS TableName
,i.[name] AS IndexName
,c.[name] AS ColumnName
FROM sys.schemas s
INNER JOIN sys.tables t ON t.schema_id = s.schema_id
AND s.[name] = 'dbo'
INNER JOIN sys.columns c ON c.object_id = t.object_id
INNER JOIN sys.indexes i ON i.object_id = t.object_id
AND i.index_id > 0
AND i.is_primary_key = 0
AND i.is_unique = 1
INNER JOIN sys.index_columns ic ON ic.object_id = t.object_id
AND ic.column_id = c.column_id
但如果 TableName 和 IndexName 有多个唯一索引列,则它们会显示多次。
它要显示:
TableName IndexName ColumnName
Customers IX_customer_name FirstName, LastName
【问题讨论】:
标签: sql sql-server tsql unique-index