SQL सर्वर में, sys.dm_exec_describe_first_result_set
डायनेमिक मैनेजमेंट फ़ंक्शन किसी दिए गए टी-एसक्यूएल स्टेटमेंट या स्टेटमेंट के लिए पहले परिणाम सेट का मेटाडेटा देता है।
यह फ़ंक्शन sp_describe_first_result_set
. के समान एल्गोरिदम का उपयोग करता है सिस्टम संग्रहीत प्रक्रिया, और बहुत कुछ वही काम करता है।
यह तीन पैरामीटर स्वीकार करता है, जिनमें से पहला टी-एसक्यूएल स्टेटमेंट है जिसका आप विश्लेषण कर रहे हैं।
सिंटैक्स
वाक्य रचना इस प्रकार है:
sys.dm_exec_describe_first_result_set(@tsql, @params, @include_browse_information)
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT *
FROM sys.dm_exec_describe_first_result_set(
N'SELECT * FROM Artists',
null,
0
);
परिणाम:
+-------------+------------------+------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------+ | 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 | error_number | error_severity | error_state | error_message | error_type | error_type_desc | |-------------+------------------+------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------| | 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 | NULL | NULL | NULL | NULL | 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 | NULL | NULL | NULL | NULL | NULL | NULL | | 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 | NULL | NULL | NULL | NULL | NULL | NULL | +-------------+------------------+------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------+
यह फ़ंक्शन कुछ कॉलम लौटाता है, इसलिए संभवतः आपको उन सभी को देखने के लिए बग़ल में स्क्रॉल करने की आवश्यकता होगी। लौटाए गए प्रत्येक कॉलम की व्याख्या के लिए बेझिझक Microsoft के दस्तावेज़ देखें।
ब्राउज़ मोड
तीसरा तर्क - @include_browse_information
- निर्दिष्ट करता है कि क्या अतिरिक्त कुंजी कॉलम और स्रोत तालिका जानकारी लौटाई गई है।
इस तर्क के लिए निम्नलिखित मान स्वीकार किए जाते हैं:
मान | <थ>परिणाम|
---|---|
0 | कोई जानकारी वापस नहीं की जाती है। |
1 | प्रत्येक क्वेरी का विश्लेषण इस तरह किया जाता है जैसे कि उसमें FOR BROWSE . शामिल हो क्वेरी पर विकल्प। यह आधार तालिका नामों को स्रोत स्तंभ जानकारी के रूप में लौटाएगा। |
2 | प्रत्येक क्वेरी का विश्लेषण इस तरह किया जाता है जैसे कि इसका उपयोग कर्सर को तैयार करने या निष्पादित करने में किया जाएगा। यह दृश्य नामों को स्रोत स्तंभ जानकारी के रूप में लौटाएगा। |
नीचे ऐसे उदाहरण दिए गए हैं जो बताते हैं कि इनमें से प्रत्येक मान परिणाम को कैसे प्रभावित करता है।
चीजों को और अधिक संक्षिप्त बनाने के लिए, मैं केवल एक कॉलम वापस करने के लिए अपने टी-एसक्यूएल स्टेटमेंट को संशोधित करूंगा।
मुझे उल्लेख करना चाहिए कि sys.dm_exec_describe_first_result_set
के लिए Microsoft दस्तावेज़ केवल दो मानों को संदर्भित करता है:0
और 1
. हालांकि, sp_describe_first_result_set
. के लिए दस्तावेज़ीकरण तीन मान निर्दिष्ट करता है:0
, 1
, और 2
, जैसा कि उपरोक्त तालिका में सूचीबद्ध है।
sys.dm_exec_describe_first_result_set
. के लिए दस्तावेज़ीकरण यह भी बताता है कि यह उसी एल्गोरिदम का उपयोग करता है जैसे sp_describe_first_result_set
।
मैंने इस फ़ंक्शन को SQL Server 2017 और SQL Server 2019 दोनों में भी चेक किया है, और यह पैरामीटर वास्तव में एक छोटा है , जो बताता है कि इसे दो से अधिक मूल्यों को स्वीकार करने के लिए डिज़ाइन किया गया था।
किसी भी तरह से, निम्नलिखित उदाहरणों में तीनों मान शामिल हैं।
@include_browse_information = 0
इस उदाहरण में मैंने @include_browse_information
. सेट किया है करने के लिए 0
।
SELECT *
FROM sys.dm_exec_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 error_number | NULL error_severity | NULL error_state | NULL error_message | NULL error_type | NULL error_type_desc | NULL
ध्यान दें कि कुछ कॉलम NULL
हैं . विशेष रूप से, ध्यान दें कि source_database
, source_schema
, source_table
, और source_column
कॉलम हैं NULL
।
ये कॉलम NULL
नहीं होंगे अगले दो उदाहरणों में, फिर भी वे दो अलग-अलग परिणाम देंगे।
@include_browse_information = 1
इस उदाहरण में मैंने @include_browse_information
. सेट किया है करने के लिए 1
.
SELECT *
FROM sys.dm_exec_describe_first_result_set(
N'SELECT AlbumName FROM vAlbums',
null,
1
);
@include_browse_information
. सेट करना करने के लिए 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 | error_number | error_severity | error_state | error_message | error_type | error_type_desc | |-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------| | 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 | Homer | Music | dbo | Albums | AlbumName | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 1 | 2 | ArtistId | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | Homer | Music | dbo | Artists | ArtistId | 0 | 1 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 1 | 3 | AlbumId | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | Homer | Music | dbo | Albums | AlbumId | 0 | 1 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 1 | 4 | GenreId | 0 | 56 | int | 4 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | Homer | Music | dbo | Genres | GenreId | 0 | 1 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------+
तो भले ही मैंने केवल टी-एसक्यूएल क्वेरी में केवल एक कॉलम निर्दिष्ट किया है जिसे मैंने प्रक्रिया में पास किया है, यह चार कॉलम के लिए जानकारी लौटाता है। ये चार कॉलम हैं जिन्हें vAlbums
. द्वारा संदर्भित किया गया है देखें।
यदि आप काफी दूर तक स्क्रॉल करते हैं, तो आप देखेंगे कि source_database
, source_schema
, source_table
, और source_column
कॉलम अब NULL
नहीं हैं . न ही source_server
है कॉलम। वे दृश्य द्वारा पूछे गए आधार वस्तुओं के बारे में जानकारी प्रदान करते हैं।
इसे देखना आसान बनाने के लिए, आइए केवल एक पंक्ति (एक कॉलम का प्रतिनिधित्व) पर लंबवत आउटपुट का उपयोग करें:
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 | Homer 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 error_number | NULL error_severity | NULL error_state | NULL error_message | NULL error_type | NULL error_type_desc | NULL
हम देख सकते हैं कि source_server
, source_database
, source_schema
, source_table
, और source_column
कॉलम अब अंतर्निहित सर्वर, डेटाबेस, स्कीमा, तालिका और दृश्य में संदर्भित कॉलम के बारे में जानकारी प्रदान करते हैं।
मेरे मामले में, मेरा विचार एक लिंक किए गए सर्वर पर टेबल से पूछताछ करता है। इसलिए, बेस टेबल एक अलग डेटाबेस में, एक अलग सर्वर पर हैं।
इसके विपरीत, जब हम @include_browse_information
. सेट करते हैं करने के लिए 2
अगले उदाहरण में, हम दृश्य में वास्तविक कॉलम प्राप्त करेंगे।
@include_browse_information = 2
अंत में, आइए सेट करते हैं @include_browse_information
करने के लिए 2
.
SELECT *
FROM sys.dm_exec_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 | error_number | error_severity | error_state | error_message | error_type | error_type_desc | |-------------+------------------+-----------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------| | 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 | Test | dbo | vAlbums | AlbumName | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 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 | NULL | NULL | NULL | NULL | 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 | Test 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 error_number | NULL error_severity | NULL error_state | NULL error_message | NULL error_type | NULL error_type_desc | NULL
इस उदाहरण में, source_table
कॉलम में आधार तालिका के बजाय वास्तविक दृश्य नाम होता है, और source_database
स्थानीय डेटाबेस का नाम है जिसे मैंने दृश्य से पूछताछ की है। साथ ही, source_column
वह स्तंभ है जिसे मैंने आधार तालिकाओं के किसी भी स्तंभ के बजाय दृश्य से क्वेरी किया है।
@params
तर्क
अब तक, हमने केवल @params
. का उपयोग किया है के लिए तर्क इसे NULL
. पर सेट करना है ।
यदि आप जिस SQL बैच का विश्लेषण कर रहे हैं उसमें पैरामीटर हैं, तो @params
. का उपयोग करें उन मापदंडों को घोषित करने के लिए कार्य करें।
यह उसी तरह काम करता है जैसे आप sp_executesql
. का उपयोग करते समय पैरामीटर घोषित करते हैं प्रक्रिया।
यहां एक उदाहरण दिया गया है जो @params
. के साथ एक पैरामीटर घोषित करता है तर्क।
SELECT *
FROM sys.dm_exec_describe_first_result_set(
N'SELECT ArtistName FROM Homer.Music.dbo.Artists WHERE ArtistId = @ArtistId',
N'@ArtistId int',
1
);
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- is_hidden | 0 column_ordinal | 1 name | ArtistName 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 | Homer source_database | Music source_schema | dbo source_table | Artists source_column | ArtistName 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 error_number | NULL error_severity | NULL error_state | NULL error_message | NULL error_type | NULL error_type_desc | NULL -[ RECORD 2 ]------------------------- is_hidden | 1 column_ordinal | 2 name | ArtistId is_nullable | 0 system_type_id | 56 system_type_name | int max_length | 4 precision | 10 scale | 0 collation_name | NULL 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 | Homer source_database | Music source_schema | dbo source_table | Artists source_column | ArtistId is_identity_column | 0 is_part_of_unique_key | 1 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 error_number | NULL error_severity | NULL error_state | NULL error_message | NULL error_type | NULL error_type_desc | NULL