SQL सर्वर में, sp_describe_first_result_set
सिस्टम संग्रहित प्रक्रिया परिणाम सेट के लिए मेटाडेटा लौटाती है।
अधिक विशेष रूप से, यह टी-एसक्यूएल बैच के पहले संभावित परिणाम सेट के लिए मेटाडेटा लौटाता है।
यह तीन पैरामीटर स्वीकार करता है, जिनमें से पहला टी-एसक्यूएल स्टेटमेंट है जिसका आप विश्लेषण कर रहे हैं।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
EXEC sp_describe_first_result_set
@tsql = N'SELECT * FROM Artists',
@params = null,
@browse_information_mode = 0;
वह कोड स्पष्ट रूप से उन तीन मापदंडों में से प्रत्येक का नाम देता है जिन्हें यह संग्रहीत कार्यविधि स्वीकार करती है।
केवल पहले पैरामीटर की आवश्यकता है। साथ ही, किसी भी संग्रहीत कार्यविधि की तरह, यदि आप चाहें तो पैरामीटर नामों को छोड़ सकते हैं।
तो हम निम्नलिखित कोड का भी उपयोग कर सकते हैं:
EXEC sp_describe_first_result_set N'SELECT * FROM Artists';
और ये रहा नतीजा:
+-------------+------------------+------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------+ | is_hidden | column_ordinal | name | is_nullable | system_type_id | system_type_name | max_length | precision | scale | collation_name | user_type_id | user_type_database | user_type_schema | user_type_name | assembly_qualified_type_name | xml_collection_id | xml_collection_database | xml_collection_schema | xml_collection_name | is_xml_document | is_case_sensitive | is_fixed_length_clr_type | source_server | source_database | source_schema | source_table | source_column | is_identity_column | is_part_of_unique_key | is_updateable | is_computed_column | is_sparse_column_set | ordinal_in_order_by_list | order_by_is_descending | order_by_list_length | tds_type_id | tds_length | tds_collation_id | tds_collation_sort_id | |-------------+------------------+------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------| | 0 | 1 | ArtistId | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | 1 | NULL | 0 | 0 | 0 | NULL | NULL | NULL | 56 | 4 | NULL | NULL | | 0 | 2 | ArtistName | 0 | 231 | nvarchar(255) | 510 | 0 | 0 | SQL_Latin1_General_CP1_CI_AS | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | 0 | NULL | 1 | 0 | 0 | NULL | NULL | NULL | 231 | 510 | 13632521 | 52 | | 0 | 3 | ActiveFrom | 1 | 40 | date | 3 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | 0 | NULL | 1 | 0 | 0 | NULL | NULL | NULL | 40 | 3 | NULL | NULL | +-------------+------------------+------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------+
इस संग्रहीत प्रक्रिया के साथ बहुत सारे कॉलम वापस आ गए हैं (प्रत्येक के स्पष्टीकरण के लिए Microsoft के डॉक्स देखें), इसलिए आपको शायद उन सभी को देखने के लिए बग़ल में स्क्रॉल करने की आवश्यकता होगी।
अगर आपको साइड में स्क्रॉल करने में समस्या आती है, तो मैं अपने अगले कुछ उदाहरणों में वर्टिकल आउटपुट पर स्विच करूंगा।
ब्राउज़ मोड
तीसरा तर्क - @browse_information_mode
- निर्दिष्ट करता है कि क्या अतिरिक्त कुंजी कॉलम और स्रोत तालिका जानकारी लौटाई गई है।
इस तर्क के लिए निम्नलिखित मान स्वीकार किए जाते हैं:
मान | <थ>परिणाम|
---|---|
0 | कोई जानकारी वापस नहीं की जाती है। |
1 | प्रत्येक क्वेरी का विश्लेषण इस तरह किया जाता है जैसे कि उसमें FOR BROWSE . शामिल हो क्वेरी पर विकल्प। यह आधार तालिका नामों को स्रोत स्तंभ जानकारी के रूप में लौटाएगा। |
2 | प्रत्येक क्वेरी का विश्लेषण इस तरह किया जाता है जैसे कि इसका उपयोग कर्सर को तैयार करने या निष्पादित करने में किया जाएगा। यह दृश्य नामों को स्रोत स्तंभ जानकारी के रूप में लौटाएगा। |
नीचे ऐसे उदाहरण दिए गए हैं जो बताते हैं कि इनमें से प्रत्येक मान परिणाम को कैसे प्रभावित करता है।
चीजों को और अधिक संक्षिप्त बनाने के लिए, मैं केवल एक कॉलम वापस करने के लिए अपने टी-एसक्यूएल स्टेटमेंट को संशोधित करूंगा। मैं आपको साइड में स्क्रॉल करने से बचाने के लिए वर्टिकल आउटपुट का उपयोग करके परिणाम भी दिखाऊंगा।
@browse_information_mode = 0
इस उदाहरण में मैंने @browse_information_mode
. सेट किया है करने के लिए 0
।
EXEC sp_describe_first_result_set
@tsql = N'SELECT AlbumName FROM vAlbums',
@params = null,
@browse_information_mode = 0;
जैसा कि पहले उल्लेख किया गया है, आप वैकल्पिक रूप से पैरामीटर नामों को छोड़ सकते हैं, यदि आप चाहें। इसलिए, हम एक ही काम करने के अधिक संक्षिप्त तरीके के रूप में निम्नलिखित कोड का उपयोग कर सकते हैं।
EXEC sp_describe_first_result_set N'SELECT AlbumName FROM vAlbums', null, 0;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
is_hidden | 0 column_ordinal | 1 name | AlbumName is_nullable | 0 system_type_id | 231 system_type_name | nvarchar(255) max_length | 510 precision | 0 scale | 0 collation_name | SQL_Latin1_General_CP1_CI_AS user_type_id | NULL user_type_database | NULL user_type_schema | NULL user_type_name | NULL assembly_qualified_type_name | NULL xml_collection_id | NULL xml_collection_database | NULL xml_collection_schema | NULL xml_collection_name | NULL is_xml_document | 0 is_case_sensitive | 0 is_fixed_length_clr_type | 0 source_server | NULL source_database | NULL source_schema | NULL source_table | NULL source_column | NULL is_identity_column | 0 is_part_of_unique_key | NULL is_updateable | 1 is_computed_column | 0 is_sparse_column_set | 0 ordinal_in_order_by_list | NULL order_by_is_descending | NULL order_by_list_length | NULL tds_type_id | 231 tds_length | 510 tds_collation_id | 13632521 tds_collation_sort_id | 52
ध्यान दें कि कुछ कॉलम NULL
हैं . विशेष रूप से, ध्यान दें कि source_database
, source_schema
, source_table
, और source_column
कॉलम हैं NULL
।
ये कॉलम NULL
नहीं होंगे अगले दो उदाहरणों में, फिर भी वे दो अलग-अलग परिणाम देंगे।
@browse_information_mode = 1
इस उदाहरण में मैंने @browse_information_mode
. सेट किया है करने के लिए 1
.
EXEC sp_describe_first_result_set
N'SELECT AlbumName FROM vAlbums', null, 1;
@browse_information_mode
Setting सेट करना करने के लिए 1
परिणाम लौटाता है जैसे कि इसमें FOR BROWSE
. शामिल है क्वेरी पर विकल्प।
हमारे मामले में, इसके परिणामस्वरूप चार पंक्तियाँ वापस आ जाती हैं (आधार तालिकाओं से चार स्तंभों का प्रतिनिधित्व)।
यहाँ चार पंक्तियाँ दी गई हैं:
+-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------+ | is_hidden | column_ordinal | name | is_nullable | system_type_id | system_type_name | max_length | precision | scale | collation_name | user_type_id | user_type_database | user_type_schema | user_type_name | assembly_qualified_type_name | xml_collection_id | xml_collection_database | xml_collection_schema | xml_collection_name | is_xml_document | is_case_sensitive | is_fixed_length_clr_type | source_server | source_database | source_schema | source_table | source_column | is_identity_column | is_part_of_unique_key | is_updateable | is_computed_column | is_sparse_column_set | ordinal_in_order_by_list | order_by_is_descending | order_by_list_length | tds_type_id | tds_length | tds_collation_id | tds_collation_sort_id | |-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------| | 0 | 1 | AlbumName | 0 | 231 | nvarchar(255) | 510 | 0 | 0 | SQL_Latin1_General_CP1_CI_AS | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | Music | dbo | Albums | AlbumName | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | 231 | 510 | 13632521 | 52 | | 1 | 2 | ArtistId | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | Music | dbo | Artists | ArtistId | 1 | 1 | 0 | 0 | 0 | NULL | NULL | NULL | 56 | 4 | NULL | NULL | | 1 | 3 | AlbumId | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | Music | dbo | Albums | AlbumId | 1 | 1 | 0 | 0 | 0 | NULL | NULL | NULL | 56 | 4 | NULL | NULL | | 1 | 4 | GenreId | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | Music | dbo | Genres | GenreId | 1 | 1 | 0 | 0 | 0 | NULL | NULL | NULL | 56 | 4 | NULL | NULL | +-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------+
तो भले ही मैंने केवल टी-एसक्यूएल क्वेरी में केवल एक कॉलम निर्दिष्ट किया है जिसे मैंने प्रक्रिया में पास किया है, यह चार कॉलम के लिए जानकारी लौटाता है। ये चार कॉलम हैं जिन्हें vAlbums
. द्वारा संदर्भित किया गया है देखें।
आइए वर्टिकल आउटपुट का उपयोग करके केवल एक कॉलम में सुधार करें:
is_hidden | 0 column_ordinal | 1 name | AlbumName is_nullable | 0 system_type_id | 231 system_type_name | nvarchar(255) max_length | 510 precision | 0 scale | 0 collation_name | SQL_Latin1_General_CP1_CI_AS user_type_id | NULL user_type_database | NULL user_type_schema | NULL user_type_name | NULL assembly_qualified_type_name | NULL xml_collection_id | NULL xml_collection_database | NULL xml_collection_schema | NULL xml_collection_name | NULL is_xml_document | 0 is_case_sensitive | 0 is_fixed_length_clr_type | 0 source_server | NULL source_database | Music source_schema | dbo source_table | Albums source_column | AlbumName is_identity_column | 0 is_part_of_unique_key | 0 is_updateable | 1 is_computed_column | 0 is_sparse_column_set | 0 ordinal_in_order_by_list | NULL order_by_is_descending | NULL order_by_list_length | NULL tds_type_id | 231 tds_length | 510 tds_collation_id | 13632521 tds_collation_sort_id | 52
ध्यान दें कि source_database
, source_schema
, source_table
, और source_column
कॉलम अब NULL
नहीं हैं . वे दृश्य द्वारा पूछे गए आधार वस्तुओं के बारे में जानकारी प्रदान करते हैं।
इसके विपरीत, जब हम @browse_information_mode
. सेट करते हैं करने के लिए 2
अगले उदाहरण में, हम दृश्य में वास्तविक कॉलम प्राप्त करेंगे।
यह भी ध्यान दें कि source_server
कॉलम अभी भी NULL
है . ऐसा इसलिए है क्योंकि स्थानीय सर्वर मूल सर्वर है। लेकिन अगर मेरा विचार किसी लिंक किए गए सर्वर पर तालिकाओं की क्वेरी कर रहा था, तो उस सर्वर का नाम source_server
में होगा कॉलम।
उदाहरण के लिए देखें कि sys.dm_exec_describe_first_result_set कैसे काम करता है। उस लेख में मैं उपरोक्त उदाहरण में एक के समान दृश्य का उपयोग करता हूं, सिवाय इसके कि यह किसी लिंक किए गए सर्वर पर डेटाबेस से पूछताछ करता है।
@browse_information_mode = 2
अंत में, चलिए @browse_information_mode
set सेट करते हैं करने के लिए 2
.
EXEC sp_describe_first_result_set
N'SELECT AlbumName FROM vAlbums', null, 2;
इस मामले में, क्वेरी का विश्लेषण किया जाता है जैसे कि इसका उपयोग कर्सर को तैयार करने या निष्पादित करने में किया जाएगा।
इस बार, केवल दो पंक्तियाँ दी गई हैं:
+-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------+ | is_hidden | column_ordinal | name | is_nullable | system_type_id | system_type_name | max_length | precision | scale | collation_name | user_type_id | user_type_database | user_type_schema | user_type_name | assembly_qualified_type_name | xml_collection_id | xml_collection_database | xml_collection_schema | xml_collection_name | is_xml_document | is_case_sensitive | is_fixed_length_clr_type | source_server | source_database | source_schema | source_table | source_column | is_identity_column | is_part_of_unique_key | is_updateable | is_computed_column | is_sparse_column_set | ordinal_in_order_by_list | order_by_is_descending | order_by_list_length | tds_type_id | tds_length | tds_collation_id | tds_collation_sort_id | |-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------| | 0 | 1 | AlbumName | 0 | 231 | nvarchar(255) | 510 | 0 | 0 | SQL_Latin1_General_CP1_CI_AS | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | Music | dbo | vAlbums | AlbumName | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | 231 | 510 | 13632521 | 52 | | 1 | 2 | ROWSTAT^@ | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | 56 | 4 | NULL | NULL | +-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+---------------+--------------+--------------------+-------------------------+
और आपको बग़ल में स्क्रॉल करने से बचाने के लिए, लंबवत आउटपुट में पहली पंक्ति यहां दी गई है:
is_hidden | 0 column_ordinal | 1 name | AlbumName is_nullable | 0 system_type_id | 231 system_type_name | nvarchar(255) max_length | 510 precision | 0 scale | 0 collation_name | SQL_Latin1_General_CP1_CI_AS user_type_id | NULL user_type_database | NULL user_type_schema | NULL user_type_name | NULL assembly_qualified_type_name | NULL xml_collection_id | NULL xml_collection_database | NULL xml_collection_schema | NULL xml_collection_name | NULL is_xml_document | 0 is_case_sensitive | 0 is_fixed_length_clr_type | 0 source_server | NULL source_database | Music source_schema | dbo source_table | vAlbums source_column | AlbumName is_identity_column | 0 is_part_of_unique_key | 0 is_updateable | 1 is_computed_column | 0 is_sparse_column_set | 0 ordinal_in_order_by_list | NULL order_by_is_descending | NULL order_by_list_length | NULL tds_type_id | 231 tds_length | 510 tds_collation_id | 13632521 tds_collation_sort_id | 52
इस उदाहरण में, source_table
स्तंभ में आधार तालिका के बजाय वास्तविक दृश्य नाम होता है।
@params
तर्क
अब तक, हमने @params
. का उपयोग नहीं किया है तर्क, इसे NULL
. पर सेट करने के अलावा ।
यदि आप जिस SQL बैच का विश्लेषण कर रहे हैं उसमें पैरामीटर हैं, तो @params
. का उपयोग करें उन मापदंडों को घोषित करने के लिए कार्य करें।
यह उसी तरह काम करता है जैसे आप sp_executesql
. का उपयोग करते समय पैरामीटर घोषित करते हैं प्रक्रिया।
यहां एक उदाहरण दिया गया है जो @params
. के साथ एक पैरामीटर घोषित करता है तर्क।
EXEC sp_describe_first_result_set
@tsql = N'SELECT AlbumName FROM Albums WHERE ArtistId = @ArtistId',
@params = N'@ArtistId int',
@browse_information_mode = 0;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
is_hidden | 0 column_ordinal | 1 name | AlbumName is_nullable | 0 system_type_id | 231 system_type_name | nvarchar(255) max_length | 510 precision | 0 scale | 0 collation_name | SQL_Latin1_General_CP1_CI_AS user_type_id | NULL user_type_database | NULL user_type_schema | NULL user_type_name | NULL assembly_qualified_type_name | NULL xml_collection_id | NULL xml_collection_database | NULL xml_collection_schema | NULL xml_collection_name | NULL is_xml_document | 0 is_case_sensitive | 0 is_fixed_length_clr_type | 0 source_server | NULL source_database | NULL source_schema | NULL source_table | NULL source_column | NULL is_identity_column | 0 is_part_of_unique_key | NULL is_updateable | 1 is_computed_column | 0 is_sparse_column_set | 0 ordinal_in_order_by_list | NULL order_by_is_descending | NULL order_by_list_length | NULL tds_type_id | 231 tds_length | 510 tds_collation_id | 13632521 tds_collation_sort_id | 52