2012-05-04 11 views
10

मुझे कॉलम परिभाषा को संशोधित करने की आवश्यकता है, लेकिन मैं यह जांचना चाहता हूं कि कॉलम पहले पूर्ण पाठ सक्षम है या नहीं। क्या TSQL स्क्रिप्ट में ऐसी जांच करने का कोई तरीका है?टीएसक्यूएल: कॉलम पूर्ण टेक्स्ट सक्षम होने पर कैसे जांचें?

मैं एसक्यूएल सर्वर का उपयोग कर रहा 2005

उत्तर

8

आप COLUMNPROPERTY() फंक्शन का उपयोग करके की कोशिश कर सकते।

DECLARE @value INT; 
SELECT @value = COLUMNPROPERTY(OBJECT_ID('schema.table'), 'column_name', 'IsFulltextIndexed') 

IF (@value = 1) 
    PRINT 'Fulltext column' 
ELSE 
    PRINT 'No Fulltext column' 
+0

तो 0 इस मामले में वास्तव में अच्छा है? –

+0

इस मामले में यह मान संभव है? '0' और 'नूल'? –

+1

क्षमा करें, मैंने जवाब दो बार संपादित किया है, इसलिए मुझे नहीं पता कि आप किस संशोधन का जिक्र कर रहे हैं। लेकिन [MSDN] (http://msdn.microsoft.com/en-us/library/ms174968%28v=sql.90%29.aspx) के अनुसार: 0 - कोई प्रतिलिपि प्राप्त अनुक्रमण, 1 - की प्रतिलिपि प्राप्त अनुक्रमण, शून्य - त्रुटि । –

0

मुझे लगता है कि this question का जवाब से पिछले उदाहरण मदद कर सकता है। हालांकि, मैंने इसका परीक्षण नहीं किया है।

+0

यदि मैं इसे सही तरीके से पढ़ रहा हूं, तो यह उत्तर ** कॉलम ** के बजाय ** तालिका ** के बारे में है। –

+0

कम से कम यह उत्तर का एक हिस्सा है; यदि तालिका में 'TableHasActiveFulltextIndex' नहीं है, तो कॉलम के लिए यह असंभव है। –

+0

@ KeesC.Bakker: एचएम, आप सही हैं ... शायद आप यहां सूचीबद्ध सामान्य प्रश्नों के कुछ हिस्सों का उपयोग कर सकते हैं: http://stackoverflow.com/questions/765867/list-of-all-index- इंडेक्स-कॉलम-इन-एसक्यूएल-सर्वर-डीबी –

5

आप कुछ इस तरह की कोशिश कर सकते हैं:

SELECT * 
FROM sys.columns c 
INNER JOIN sys.fulltext_index_columns fic ON c.object_id = fic.object_id 
              AND c.column_id = fic.column_id 

आप किसी तालिका तक सीमित करने की जरूरत है, इस का उपयोग करें:

SELECT * 
FROM sys.columns c 
INNER JOIN sys.fulltext_index_columns fic ON c.object_id = fic.object_id 
              AND c.column_id = fic.column_id 
WHERE c.object_id = OBJECT_ID('YourTableNameHere') 
+0

स्वीट, यह काम करता है। लेकिन यह ईसाई लगता है। के पास एक छोटा सा जवाब है। –

+2

मैं यह उत्तर पसंद करता हूं क्योंकि यह कॉलम आईडी के साथ सभी पूर्ण-पाठ अनुक्रमित कॉलम दिखाता है। यह आपको 'SELECT display_term, column_id, document_count sys.dm_fts_index_keywords (DB_ID (' DB_NAME '), OBJECT_ID (' TABLE_NAME ')) दस्तावेज़_count desc द्वारा क्रमबद्ध करने के लिए कुछ शर्तों को दिखाने की अनुमति देता है और वे कहां हैं अनुक्रमित। – webnoob