SQL सर्वर में, sys.dm_exec_describe_first_result_set_for_object
गतिशील प्रबंधन फ़ंक्शन किसी दिए गए मॉड्यूल के लिए सेट किए गए पहले परिणाम का मेटाडेटा लौटाता है।
यह एक @object_id
लेता है एक पैरामीटर के रूप में और उस आईडी के साथ मॉड्यूल के लिए पहले परिणाम मेटाडेटा का वर्णन करता है।
यह sp_describe_first_result_set
. के समान एल्गोरिथम का उपयोग करता है सिस्टम संग्रहीत कार्यविधि और sys.dm_exec_describe_first_result_set
फ़ंक्शन, और बहुत कुछ वही काम करता है, सिवाय इसके कि यह केवल संग्रहीत प्रक्रियाओं और ट्रिगर्स तक ही सीमित है।
यदि आप किसी भिन्न ऑब्जेक्ट प्रकार (जैसे दृश्य, फ़ंक्शन, तालिका, आदि) की आईडी पास करते हैं तो यह एक त्रुटि लौटाएगा।
सिंटैक्स
वाक्य रचना इस प्रकार है:
sys.dm_exec_describe_first_result_set_for_object
( @object_id , @include_browse_information )
जहां @object_id
संग्रहित प्रक्रिया या ट्रिगर की आईडी है, और @include_browse_information
आपको ब्राउज़ मोड का उपयोग करने की अनुमति देता है जैसे कि कोई FOR BROWSE
. है क्वेरी पर विकल्प।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
इस उदाहरण में, मैं OBJECT_ID()
. का उपयोग करता हूं संग्रहीत प्रक्रिया की आईडी वापस करने के लिए कार्य (जो मुझे वास्तविक आईडी जानने से बचाता है)।
SELECT *
FROM sys.dm_exec_describe_first_result_set_for_object(
OBJECT_ID('spAlbumsFromArtist'),
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 | 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 | NULL | NULL | NULL | NULL | 0 | NULL | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 0 | 2 | ReleaseDate | 0 | 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 के दस्तावेज़ देखें।
यहां पहली पंक्ति फिर से है, लेकिन लंबवत आउटपुट का उपयोग कर रहा है:
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
ध्यान दें कि source_server
, source_database
, source_schema
, source_table
, और source_column
कॉलम हैं NULL
. वे NULL
नहीं होंगे अगले दो उदाहरणों में।
ब्राउज़ मोड
पिछले उदाहरण में, मैंने 0
. का उपयोग किया था दूसरे तर्क के लिए। आप इसे 0
. पर सेट कर सकते हैं , 1
, या 2
।
यहां हर मान का मतलब बताया गया है:
मान | <थ>परिणाम|
---|---|
0 | कोई जानकारी वापस नहीं की जाती है। |
1 | प्रत्येक क्वेरी का विश्लेषण इस तरह किया जाता है जैसे कि उसमें FOR BROWSE . शामिल हो क्वेरी पर विकल्प। यह आधार तालिका नामों को स्रोत स्तंभ जानकारी के रूप में लौटाएगा। |
2 | प्रत्येक क्वेरी का विश्लेषण इस तरह किया जाता है जैसे कि इसका उपयोग कर्सर को तैयार करने या निष्पादित करने में किया जाएगा। यह दृश्य नामों को स्रोत स्तंभ जानकारी के रूप में लौटाएगा। |
हम पहले ही देख चुके हैं कि 0
. पर सेट होने पर क्या होता है . तो अगले दो उदाहरणों में, मैं इसे 1
. पर सेट कर दूंगा और 2
क्रमशः।
मुझे यह बताना चाहिए कि Microsoft दस्तावेज़ कहता है कि यह तर्क टाइप बिट . है , और केवल दो संभावित मानों को संदर्भित करता है:0
और 1
. हालाँकि, मैंने SQL Server 2017 और SQL Server 2019 दोनों में इस फ़ंक्शन की जाँच की, और यह वास्तव में एक छोटा है .
इसके अलावा, sp_describe_first_result_set
. के लिए दस्तावेज़ीकरण संग्रहीत कार्यविधि स्पष्ट रूप से निर्दिष्ट करती है कि यह तर्क छोटा है , और यह कि यह ऊपर वर्णित तीन मूल्यों को स्वीकार करता है।
साथ ही, sys.dm_exec_describe_first_result_set_for_object
के लिए दस्तावेज़ीकरण बताता है कि यह उसी एल्गोरिदम का उपयोग करता है जैसे sp_describe_first_result_set
.
किसी भी मामले में, इस लेख के उदाहरणों में तीनों मान शामिल हैं।
@include_browse_information = 1
इस उदाहरण में मैंने @include_browse_information
. सेट किया है करने के लिए 1
.
SELECT *
FROM sys.dm_exec_describe_first_result_set_for_object(
OBJECT_ID('spAlbumsFromArtist'),
1
);
परिणाम:
+-------------+------------------+-------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------+ | 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 | | 0 | 2 | ReleaseDate | 0 | 40 | date | 3 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | Homer | Music | dbo | Albums | ReleaseDate | 0 | 0 | 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 | 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 | +-------------+------------------+-------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------+
इस बार चार पंक्तियाँ दी गई हैं, जो अंतर्निहित तालिकाओं से चार स्तंभों का प्रतिनिधित्व करती हैं।
आइए पहले कॉलम को वर्टिकल आउटपुट का उपयोग करके फिर से सिंगल करें, जैसा कि हमने पिछले उदाहरण में किया था:
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
कॉलम अब NULL
नहीं हैं .
इस मामले में, वे कॉलम संग्रहीत प्रक्रिया के भीतर अंतर्निहित सर्वर, डेटाबेस, स्कीमा, तालिका और क्वेरी के कॉलम को दर्शाते हैं।
मेरा मतलब यह प्रदर्शित करने के लिए, यहाँ वास्तविक संग्रहीत कार्यविधि परिभाषा है:
CREATE PROCEDURE [dbo].[spAlbumsFromArtist]
@ArtistName varchar(255)
AS
SELECT AlbumName, ReleaseDate
FROM Homer.Music.dbo.Albums al
INNER JOIN Homer.Music.dbo.Artists ar
ON al.ArtistId = ar.ArtistId
WHERE ar.ArtistName = @ArtistName;
GO
संग्रहीत प्रक्रिया "होमर" नामक लिंक किए गए सर्वर के साथ-साथ रिमोट सर्वर से डेटाबेस, स्कीमा, टेबल और कॉलम को संदर्भित करने के लिए चार भाग नामकरण का उपयोग करती है। यह sys.dm_exec_describe_first_result_set_for_object
द्वारा लौटाए गए डेटा से मेल खाता है समारोह।
@include_browse_information = 2
इस उदाहरण में मैंने @include_browse_information
. सेट किया है करने के लिए 2
.
SELECT *
FROM sys.dm_exec_describe_first_result_set_for_object(
OBJECT_ID('spAlbumsFromArtist'),
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 | Homer | Music | dbo | Albums | AlbumName | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 0 | 2 | ReleaseDate | 0 | 40 | date | 3 | 10 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | Homer | Music | dbo | Albums | ReleaseDate | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 1 | 3 | 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 | +-------------+------------------+-------------+---------------+------------------+--------------------+--------------+-------------+---------+------------------------------+----------------+----------------------+--------------------+------------------+--------------------------------+---------------------+---------------------------+-------------------------+-----------------------+-------------------+---------------------+----------------------------+-----------------+-------------------+-----------------+----------------+-----------------+----------------------+-------------------------+-----------------+----------------------+------------------------+----------------------------+--------------------------+------------------------+----------------+------------------+---------------+-----------------+--------------+-------------------+
इस बार केवल तीन पंक्तियाँ लौटाई गई हैं, जो तीन स्तंभों का प्रतिनिधित्व करती हैं, जिसमें एक ROWSTAT
. भी शामिल है कॉलम।