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

SQL सर्वर में sys.dm_exec_describe_first_result_set_for_object कैसे काम करता है

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 . भी शामिल है कॉलम।


  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 सर्वर में रनिंग टोटल की गणना करें

  2. SQL सर्वर लेनदेन संबंधी प्रतिकृति आंतरिक

  3. SQL सर्वर T-SQL फ़ंक्शन का उपयोग कैसे करें SUM:5 मामलों का उपयोग करें

  4. SQL सर्वर रिकर्सिव सेल्फ जॉइन

  5. डेटाबेस जो> 500 मिलियन पंक्तियों को संभाल सकता है