【发布时间】:2013-02-26 14:38:49
【问题描述】:
是否有一个脚本可以查找没有聚集索引但上面有 Sql server 2008 r2 主键的表?请告诉我。
【问题讨论】:
-
您可以使用元数据方案。
标签: sql-server-2008 tsql
是否有一个脚本可以查找没有聚集索引但上面有 Sql server 2008 r2 主键的表?请告诉我。
【问题讨论】:
标签: sql-server-2008 tsql
类似这样的:
SELECT
so.name AS TableName,
si.name AS IndexName,
si.type_desc AS IndexType,
si.is_primary_key
FROM
sys.indexes si
JOIN sys.tables so ON si.[object_id] = so.[object_id]
WHERE
si.type IN (0, 2)
AND si.is_primary_key=1
ORDER BY
so.name
【讨论】:
sys.tables - 让您不必总是为您的表指定 type = 'U'... ..
si.type IN (0, 2) - “0”代表“堆”,“2”代表其他非聚集索引。
select O.name
from sys.objects as O
inner join sys.indexes as I1
on O.object_id = I1.object_id
inner join sys.indexes as I2
on O.object_id = I2.object_id
where O.type = 'U' and -- U = Table (user-defined)
I1.type = 0 and -- 0 = Heap
I2.is_primary_key = 1
【讨论】: