Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में परिणाम सेट में लौटाए गए कॉलम के डेटा प्रकार का पता लगाएं

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 कैसे काम करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2008 खाली स्ट्रिंग बनाम स्पेस

  2. जहां न्यूल है, नॉट न्यूल या नो व्हेयर क्लॉज SQL सर्वर पैरामीटर मान पर निर्भर करता है

  3. त्रुटि संदेश 4151 को ठीक करें "NULLIF के लिए पहले तर्क का प्रकार NULL स्थिरांक नहीं हो सकता क्योंकि SQL सर्वर में पहले तर्क के प्रकार को जानना होगा"

  4. आप SQL सर्वर 2005 डेटाबेस के सभी मौजूदा कनेक्शन कैसे मारते हैं?

  5. SQL सर्वर डायग्नोस्टिक्स चलाने के लिए 4 युक्तियाँ