2012-11-15 16 views
7

tüm kümelenmiş dizinleri bulmak için Komut dosyası Eşlenik veri türü sütunlarında yerleşik tüm kümelenmiş dizinleri bulmaya çalışıyorum. Açıkçası bu kümelenmiş bir dizin için korkunç bir seçim ve hepsini bulmaya ve onları kaldırmaya çalışıyorum. Şimdiye kadar yazdığım komut dosyası, üzerinde benzersiz bir tanımlayıcı bulunan her tablo için tüm kümelenmiş dizinleri döndürür. Lütfen yardım et. İşte betik:SQL Server - Belirli bir veri türünde

select distinct object_name(i.object_id) AS tablename, i.name AS indexname, i.type_desc  as type 
from sys.indexes i 
join sys.index_columns ic on ic.object_id = i.object_id and ic.index_id = i.index_id 
join sys.columns c on c.column_id = ic.index_column_id 
join sys.types t on t.system_type_id = c.system_type_id 
join sys.objects o on o.object_id = i.object_id 
where t.name = 'uniqueidentifier' 
and i.type_desc = 'clustered' 
and object_name(i.object_id) not like 'sys%' 
Bu sizin eksik bit benziyor
+0

O ** ** değerleri rastgele tahsis ediliyor ise korkunç bir seçimdir – RichardTheKiwi

+0

object dahil edilmeleri gerekmektedir deyimi, sys.columns, (örneğin newid() ile). Sıralı değerlerin atanması durumunda * mutlaka * korkunç bir seçim değildir. –

cevap

8
select o.name objectname, i.name indexname, c.name as columnname 
from sys.objects o 
join sys.indexes i on i.object_id = o.object_id 
join sys.index_columns ic on ic.index_id = i.index_id and ic.object_id = i.object_id 
join sys.columns c on c.object_id = o.object_id and c.column_id = ic.column_id 
join sys.types t on c.system_type_id = t.system_type_id 
where o.is_ms_shipped = 0 
    and i.type_desc = 'CLUSTERED' 
    and t.name = 'uniqueidentifier' 
order by o.name, i.name 
+0

Teşekkür ederim RichardTheKiwi. Bu harika çalıştı :) – user1825469

+0

Bir şey değil. Lütfen cevaplayarak onaylamayı unutmayın. – RichardTheKiwi