2010-09-29 5 views
19

SQL क्वेरी का उपयोग कर तालिका में किसी कॉलम का डिफ़ॉल्ट मान कैसे प्राप्त कर सकता हूं?SQL सर्वर: किसी क्वेरी के साथ कॉलम का डिफ़ॉल्ट मान पता करें

इस संग्रहीत प्रक्रिया का उपयोग द्वारा:

sp_columns @tablename 

मैं किसी विशेष तालिका लेकिन कॉलम नहीं हैं का डिफ़ॉल्ट मान के स्तंभों पर कुछ जानकारी प्राप्त, मैं इसे कैसे मिल सकता है?

SELECT so.name AS table_name, 
      sc.name AS column_name, 
      sm.text AS default_value 
    FROM sys.sysobjects so 
    JOIN sys.syscolumns sc ON sc.id = so.id 
LEFT JOIN sys.syscomments sm ON sm.id = sc.cdefault 
    WHERE so.xtype = 'U' 
     AND so.name = @yourtable 
ORDER BY so.[name], sc.colid 

उत्तर

48

आप नीचे दिए गए (! अपने वातावरण के लिए प्रासंगिक वाले को खोजने के लिए स्तंभ और तालिका नाम समायोजित करने के लिए याद)

SELECT object_definition(default_object_id) AS definition 
FROM sys.columns 
WHERE name  ='colname' 
AND object_id = object_id('dbo.tablename') 
+1

यह एसक्यूएल सर्वर 2008 पर मेरे लिए कुछ भी नहीं देता है ... और मैं एक तथ्य के लिए पता है कि मेरी sch एएमए/टेबल/फील्ड नाम सही हैं, और वास्तव में एक डिफ़ॉल्ट है। – Amalgovinus

+0

@Amalgovinus यह निश्चित रूप से काम करता है। क्या आप इसे सही डेटाबेस संदर्भ में चला रहे हैं? क्या आप जिस खाते में क्वेरी चला रहे हैं, उसके पास परिभाषा देखने के लिए पर्याप्त अनुमतियां हैं? –

+0

हाँ, मुझे अनुमति नहीं थी। अन्य परिस्थितियों में Mssql आपको यह बताने के लिए पर्याप्त "अच्छा" है कि आप sysobjects, आदि जैसी चीजों तक नहीं पहुंच सकते हैं, लेकिन इस मामले में यह दिखाता है कि अगर आप किसी ऐसे डेटाबेस का उपयोग नहीं कर रहे हैं जिस पर आपको अनुमति है, तो यह दिखाने के लिए कुछ भी नहीं है । मुझे इसके लिए काम करने के लिए एक डिफ़ॉल्ट डेटाबेस सेट करना पड़ा। http://stackoverflow.com/questions/362434/how-can-i-change-my-default-database-in-sql-server-without-using-ms-sql-server-m – Amalgovinus

14

उपयोग के साथ संग्रहीत परिभाषा पा सकते हैं INFORMATION_SCHEMA का उपयोग करें:

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = @SchemaName 
    AND TABLE_NAME = @TableName 
    AND COLUMN_NAME = @ColumnName