2012-11-15 16 views
7

पर बनाए गए सभी क्लस्टर इंडेक्स को खोजने के लिए स्क्रिप्ट मैं डेटा प्रकार अद्वितीय इडेंडिफायर के कॉलम पर बनाए गए सभी क्लस्टर इंडेक्स को खोजने का प्रयास कर रहा हूं। जाहिर है यह क्लस्टर इंडेक्स के लिए एक भयानक पसंद है, और मैं उन सभी को खोजने और उन्हें हटाने की कोशिश कर रहा हूं। जिस स्क्रिप्ट को मैंने अभी तक लिखा है, वह सभी तालिकाओं के लिए सभी क्लस्टर इंडेक्स लौटाता है जिनके पास एक अद्वितीय इडेंटिफायर है। कृपया मदद करे। यहाँ स्क्रिप्ट है:एसक्यूएल सर्वर - एक विशिष्ट डेटा प्रकार

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%' 
+0

यह अपने लापता बिट की तरह लग रहा खंड पर sys.columns, जो object_id शामिल करना चाहिए – RichardTheKiwi

+0

यह ** यदि ** मूल्यों बेतरतीब ढंग से आवंटित किया जा रहा है एक भयानक पसंद है (उदाहरण के लिए 'newid()' के माध्यम से)। यह अनुक्रमिक मान असाइन किए जाने पर * जरूरी * एक भयानक पसंद नहीं है। –

उत्तर

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

धन्यवाद रिचर्डथीकिवी। यह अद्भुत काम किया :) – user1825469

+0

आपका स्वागत है। कृपया टिक कर जवाब स्वीकार करना याद रखें। – RichardTheKiwi

संबंधित मुद्दे