SQL सर्वर में, क्वेरी से सेट किए गए परिणाम का मेटाडेटा प्राप्त करने के कुछ तरीके हैं। इसमें T-SQL क्वेरी द्वारा लौटाए गए कॉलम का डेटा प्रकार शामिल है।
विशेष रूप से, sys.dm_exec_describe_first_result_set
ऐसे कार्य के लिए सिस्टम डायनेमिक मैनेजमेंट फंक्शन एक अच्छा विकल्प है।
उदाहरण
sys.dm_exec_describe_first_result_set
का उपयोग करने का तरीका दिखाने के लिए यहां एक उदाहरण दिया गया है किसी दिए गए टी-एसक्यूएल क्वेरी द्वारा लौटाए गए प्रत्येक कॉलम के बारे में डेटा प्रकार की जानकारी प्राप्त करने के लिए।
SELECT
name,
user_type_name,
system_type_name,
max_length,
[precision],
scale
FROM sys.dm_exec_describe_first_result_set(
'select * from Clients',
null,
0);
परिणाम:
+------------+------------------+--------------------+--------------+-------------+---------+ | name | user_type_name | system_type_name | max_length | precision | scale | |------------+------------------+--------------------+--------------+-------------+---------| | ClientCode | clientcode | varchar(8) | 8 | 0 | 0 | | FirstName | NULL | varchar(60) | 60 | 0 | 0 | | LastName | NULL | varchar(60) | 60 | 0 | 0 | +------------+------------------+--------------------+--------------+-------------+---------+
इस मामले में, तीन पंक्तियाँ लौटाई जाती हैं, जिनमें से प्रत्येक एक स्तंभ का प्रतिनिधित्व करती है जो उस क्वेरी द्वारा लौटाया जाएगा जिसका मैं विश्लेषण कर रहा हूँ।
आपने देखा होगा कि कॉलम में से एक उपयोगकर्ता द्वारा परिभाषित डेटा प्रकार उपनाम का उपयोग करता है जिसे क्लाइंटकोड . कहा जाता है . जब आप एक उपयोगकर्ता-परिभाषित डेटा प्रकार का उपनाम बनाते हैं, तो आप इसे मौजूदा सिस्टम प्रकार पर आधारित करते हैं। यह उपरोक्त परिणाम में परिलक्षित होता है। हम देख सकते हैं कि क्लाइंटकोड varchar(8) . पर आधारित है .
sys.dm_exec_describe_first_result_set
फ़ंक्शन बहुत सारे कॉलम देता है, इसलिए सभी कॉलम शामिल करने के लिए स्वतंत्र महसूस करें यह देखने के लिए कि क्या कोई अन्य है जो आपको उपयोगी लग सकता है। यह भी देखें कि कैसे sys.dm_exec_describe_first_result_set
अधिक विस्तृत स्पष्टीकरण और अधिक उदाहरणों के लिए काम करता है।
आप sp_describe_first_result_set
. का भी उपयोग कर सकते हैं समान जानकारी वापस करने के लिए सिस्टम संग्रहीत कार्यविधि (यह sys.dm_exec_describe_first_result_set
के समान एल्गोरिथम का उपयोग करता है) )।
संग्रहीत प्रक्रिया परिणाम सेट
यदि आप किसी संग्रहीत कार्यविधि द्वारा लौटाए गए स्तंभों का डेटा प्रकार प्राप्त करना चाहते हैं, तो आप sys.dm_exec_describe_first_result_set_for_object
का उपयोग कर सकते हैं समारोह।
यह फ़ंक्शन पिछले वाले के समान एल्गोरिदम का उपयोग करता है, लेकिन अंतर यह है कि यह एक संग्रहीत प्रक्रिया की आईडी को स्वीकार करता है या इसके पहले तर्क के रूप में ट्रिगर करता है (वास्तविक टी-एसक्यूएल बैच के बजाय)।
इसलिए, हम इसे इस तरह इस्तेमाल कर सकते हैं:
SELECT
name,
user_type_name,
system_type_name,
max_length,
[precision],
scale
FROM sys.dm_exec_describe_first_result_set_for_object(
OBJECT_ID('sp_BadDogs'),
0);
परिणाम:
+---------+------------------+--------------------+--------------+-------------+---------+ | name | user_type_name | system_type_name | max_length | precision | scale | |---------+------------------+--------------------+--------------+-------------+---------| | DogId | NULL | int | 4 | 10 | 0 | | DogName | NULL | nvarchar(255) | 510 | 0 | 0 | | GoodDog | NULL | bit | 1 | 1 | 0 | +---------+------------------+--------------------+--------------+-------------+---------+
इस मामले में, मैंने OBJECT_ID()
. का इस्तेमाल किया संग्रहीत प्रक्रिया की आईडी वापस करने के लिए कार्य, जिसने मुझे वास्तविक आईडी जानने से बचाया।
इस फ़ंक्शन के लिए अधिक जानकारी और उदाहरणों के लिए देखें कि sys.dm_exec_describe_first_result_set_for_object कैसे काम करता है।