Udostępnij za pomocą


sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Ta dynamiczna funkcja zarządzania przyjmuje parametr i @object_id opisuje metadane pierwszego wyniku dla modułu o tym ID. Określona @object_id może być ID procedury przechowywanej Transact-SQL lub wyzwalacza Transact-SQL. Jeśli jest to ID jakiegokolwiek innego obiektu (takiego jak widok, tabela, funkcja lub procedura CLR), błąd zostanie określony w kolumnach błędu wyniku.

sys.dm_exec_describe_first_result_set_for_object ma tę samą definicję zbioru wyników co sys.dm_exec_describe_first_result_set (Transact-SQL) i jest podobny do sp_describe_first_result_set (Transact-SQL).

Transact-SQL konwencje składni

Składnia

  
sys.dm_exec_describe_first_result_set_for_object   
    ( @object_id , @include_browse_information )  

Arguments

@object_id
Procedura @object_id Transact-SQL przechowywana lub Transact-SQL wyzwalacz. @object_id to typ int.

@include_browse_information
@include_browse_information to typowy bit. Jeśli ustawimy na 1, każde zapytanie jest analizowane tak, jakby miało opcję FOR BROWSE na zapytaniu. Zwraca dodatkowe kolumny kluczowe oraz informacje o tabeli źródłowej.

Zwracana tabela

Te wspólne metadane są zwracane jako zestaw wyników z jednym wierszem dla każdej kolumny w metadanych wyników. Każdy wiersz opisuje typ i nieważność kolumny w formacie opisanym w następnej sekcji. Jeśli pierwsze zdanie nie istnieje dla każdej ścieżki sterującej, zwracany jest zbiór wyników z zerem wierszy.

Nazwa kolumny Typ danych Description
is_hidden bit Określa, czy kolumna jest dodatkową kolumną dodaną do celów informacji po przeglądaniu, która faktycznie nie pojawia się w zbiorze wyników.
column_ordinal int Zawiera pozycję porządkową kolumny w zbiorze wyników. Pozycja pierwszej kolumny zostanie określona jako 1.
name sysname Zawiera nazwę kolumny, jeśli można ją ustalić. W przeciwnym razie jest NULL.
is_nullable bit Zawiera wartość 1, jeśli kolumna dopuszcza NULL, 0, jeśli kolumna nie dopuszcza NULL, oraz 1, jeśli nie można ustalić, że kolumna zezwala na NULL.
system_type_id int Zawiera system_type_id typu danych kolumny określonej w sys.types. Dla typów CLR, mimo że kolumna system_type_name zwraca NULL, ta kolumna zwraca wartość 240.
system_type_name nvarchar(256) Zawiera nazwę typu danych. Zawiera argumenty (takie jak długość, precyzja, skala) określone dla typu danych kolumny. Jeśli typ danych jest typem aliasu zdefiniowanym przez użytkownika, tutaj określa się bazowy typ systemu. Jeśli jest to typ CLR zdefiniowany przez użytkownika, w tej kolumnie zwracany jest NULL.
max_length smallint Maksymalna długość (w bajtach) kolumny.

-1 = Typ danych kolumny to varchar(max), nvarchar(max), varbinary(max)lub xml.

W kolumnach tekstowych wartość max_length będzie 16 lub wartość określona przez sp_tableoption 'tekst w wierszu'.
precyzja tinyint Precyzja kolumny, jeśli opiera się na liczbach. W przeciwnym razie zwraca 0.
scale tinyint Skala kolumny, jeśli jest oparta na liczbach. W przeciwnym razie zwraca 0.
collation_name sysname Nazwa zestawu kolumny, jeśli jest oparty na znakach. W przeciwnym razie zwraca NULL.
user_type_id int Dla typów CLR i alias, zawiera user_type_id typu danych kolumny określonej w sys.types. W przeciwnym razie jest NULL.
user_type_database sysname Dla typów CLR i alias, zawiera nazwę bazy danych, w której typ jest zdefiniowany. W przeciwnym razie jest NULL.
user_type_schema sysname Dla typów CLR i alias, zawiera nazwę schematu, w którym dany typ jest zdefiniowany. W przeciwnym razie jest NULL.
user_type_name sysname Dla typów CLR i alias, zawiera nazwę typu. W przeciwnym razie jest NULL.
assembly_qualified_type_name nvarchar(4000) Dla typów CLR zwraca nazwę asembla oraz klasę definiującą typ. W przeciwnym razie jest NULL.
xml_collection_id int Zawiera xml_collection_id typu danych kolumny zgodnie z definicją sys.columns. Ta kolumna zwróci NULL, jeśli zwrócony typ nie jest powiązany z kolekcją schematów XML.
xml_collection_database sysname Zawiera bazę danych, w której zdefiniowana jest kolekcja schematów XML powiązana z tym typem. Ta kolumna zwróci NULL, jeśli zwrócony typ nie jest powiązany z kolekcją schematów XML.
xml_collection_schema sysname Zawiera schemat, w którym zdefiniowana jest kolekcja schematów XML powiązana z tym typem. Ta kolumna zwróci NULL, jeśli zwrócony typ nie jest powiązany z kolekcją schematów XML.
xml_collection_name sysname Zawiera nazwę kolekcji schematów XML powiązanej z tym typem. Ta kolumna zwróci NULL, jeśli zwrócony typ nie jest powiązany z kolekcją schematów XML.
is_xml_document bit Zwraca 1, jeśli zwrócony typ danych to XML i ten typ gwarantuje kompletny dokument XML (w tym węzeł główny), a nie fragment XML). W przeciwnym razie zwraca 0.
is_case_sensitive bit Zwraca 1, jeśli kolumna jest typu ciągu czułego na wielka czy wielka przyległości, oraz 0, jeśli nie jest.
is_fixed_length_clr_type bit Zwraca 1, jeśli kolumna jest typu CLR o stałej długości, a 0, jeśli nie jest.
source_server sysname Nazwa serwera pochodzenia zwracana przez kolumnę w tym wyniku (jeśli pochodzi z serwera zdalnego). Nazwa została podana tak, jak pojawia się w sys.servers. Zwraca NULL, jeśli kolumna pochodzi z lokalnego serwera lub jeśli nie da się określić, z którego serwera pochodzi. Jest wypełniany tylko wtedy, gdy zażądane są informacje o przeglądaniu.
source_database sysname Nazwa bazy danych zwracana przez kolumnę w tym wyniku. Zwraca NULL, jeśli baza danych nie może zostać określona. Jest wypełniany tylko wtedy, gdy zażądane są informacje o przeglądaniu.
source_schema sysname Nazwa schematu początkowego zwracana przez kolumnę w tym wyniku. Zwraca NULL, jeśli schemat nie może być określony. Jest wypełniany tylko wtedy, gdy zażądane są informacje o przeglądaniu.
source_table sysname Nazwa tabeli początkowej zwracanej przez kolumnę w tym wyniku. Zwraca NULL, jeśli tabela nie może być określona. Jest wypełniany tylko wtedy, gdy zażądane są informacje o przeglądaniu.
source_column sysname Nazwa kolumny początkowej zwracana przez kolumnę w tym wyniku. Zwraca NULL, jeśli kolumny nie można określić. Jest wypełniany tylko wtedy, gdy zażądane są informacje o przeglądaniu.
is_identity_column bit Zwraca 1, jeśli kolumna jest kolumną tożsamościową, a 0, jeśli nie. Zwraca NULL, jeśli nie można ustalić, że kolumna jest kolumną tożsamości.
is_part_of_unique_key bit Zwraca 1, jeśli kolumna jest częścią unikalnego indeksu (wliczając unikalne i główne ograniczenie), a 0, jeśli nie. Zwraca NULL, jeśli nie można ustalić, że kolumna jest częścią unikalnego indeksu. Pojawiają się tylko wtedy, gdy zażądane są informacje o przeglądaniu.
is_updateable bit Zwraca 1, jeśli kolumna jest zaktualizowana, i 0, jeśli nie. Zwraca NULL, jeśli nie da się ustalić, że kolumna jest zaktualizowana.
is_computed_column bit Zwraca 1, jeśli kolumna jest kolumną obliczeniową, a 0, jeśli nie. Zwraca NULL, jeśli nie można ustalić, że kolumna jest kolumną obliczoną.
is_sparse_column_set bit Zwraca 1, jeśli kolumna jest rzadką, a 0, jeśli nie. Zwraca NULL, jeśli nie można ustalić, że kolumna jest częścią zbioru rzadkich kolumn.
ordinal_in_order_by_list smallint Pozycja tej kolumny w liście ORDER BY Zwraca NULL, jeśli kolumna nie pojawia się na liście ORDER BY lub jeśli lista ORDER BY nie może być jednoznacznie określona.
order_by_list_length smallint Długość listy ORDER BY. Zwraca NULL, jeśli nie ma listy ORDER BY lub jeśli lista ORDER BY nie może być jednoznacznie określona. Należy zauważyć, że ta wartość będzie taka sama dla wszystkich wierszy zwróconych przez sp_describe_first_result_set.
order_by_is_descending smallint NULL Jeśli ordinal_in_order_by_list nie jest NULL, kolumna order_by_is_descending pokazuje kierunek klauzuli ORDER BY dla tej kolumny. W przeciwnym razie raportuje NULL.
error_number int Zawiera numer błędu zwracany przez funkcję. Zawiera NULL, jeśli w kolumnie nie wystąpił żaden błąd.
error_severity int Zawiera ostrość zwracaną przez funkcję. Zawiera NULL, jeśli w kolumnie nie wystąpił żaden błąd.
error_state int Zawiera komunikat stanu zwracany przez funkcję. Jeśli nie wystąpił żaden błąd. kolumna zawiera NULL.
error_message nvarchar(4096) Zawiera komunikat zwracany przez funkcję. Jeśli nie wystąpił żaden błąd, kolumna zawiera NULL.
error_type int Zawiera liczbę całkowitą reprezentującą zwracany błąd. Mapy do error_type_desc. Zobacz listę w sekcji uwagi.
error_type_desc nvarchar(60) Zawiera krótki ciąg wielkich liter reprezentujący zwracany błąd. Mapy do error_type. Zobacz listę w sekcji uwagi.

Uwagi

Funkcja ta wykorzystuje ten sam algorytm co sp_describe_first_result_set. Więcej informacji można znaleźć w sp_describe_first_result_set (Transact-SQL).

Poniższa tabela przedstawia typy błędów oraz ich opisy

error_type error_type Description
1 RÓŻNE Wszystkie błędy, które nie są inaczej opisane.
2 SKŁADNIA W partii wystąpił błąd składniowy.
3 CONFLICTING_RESULTS Wynik nie mógł zostać określony z powodu konfliktu między dwoma możliwymi pierwszymi zdaniami.
4 DYNAMIC_SQL Wynik nie mógł zostać określony ze względu na dynamiczne SQL, które mogłoby potencjalnie zwrócić pierwszy wynik.
5 CLR_PROCEDURE Nie można było określić wyniku, ponieważ procedura przechowywana w CLR mogłaby potencjalnie zwrócić pierwszy wynik.
6 CLR_TRIGGER Nie można było określić wyniku, ponieważ wyzwalacz CLR mógłby potencjalnie zwrócić pierwszy wynik.
7 EXTENDED_PROCEDURE Nie można było określić wyniku, ponieważ rozszerzona procedura przechowywana mogłaby potencjalnie zwrócić pierwszy wynik.
8 UNDECLARED_PARAMETER Wynik nie mógł zostać określony, ponieważ typ danych jednej lub więcej kolumn zbioru wyników potencjalnie zależy od niezadeklarowanego parametru.
9 REKURENCJA Nie można było określić wyniku, ponieważ partia zawiera rekurencyjne zdanie.
10 TEMPORARY_TABLE Nie można było ustalić wyniku, ponieważ partia zawiera tabelę tymczasową i nie jest wspierana przez sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT Wynik nie mógł zostać określony, ponieważ partia zawiera instrukcje, które nie są wspierane przez sp_describe_first_result_set (np. FETCH, REVERT itd.).
12 OBJECT_ID_NOT_SUPPORTED Procedura przekazana @object_id do funkcji nie jest obsługiwana (tzn. nie jest procedurą przechowywaną)
13 OBJECT_ID_DOES_NOT_EXIST Przekazane funkcji @object_id nie pojawiły się w katalogu systemowym.

Permissions

Wymaga zgody na wykonanie argumentu @tsql .

Przykłady

A. Zwracanie metadanych z informacjami o przeglądaniu i bez nich

Poniższy przykład tworzy procedurę przechowywaną o nazwie TestProc2, która zwraca dwa zbiory wyników. Następnie przykład pokazuje, że sys.dm_exec_describe_first_result_set zwraca informacje o pierwszym zbiorze wyników w procedurze, zarówno z informacją o przeglądaniu, jak i bez niej.

CREATE PROC TestProc2  
AS  
SELECT object_id, name FROM sys.objects ;  
SELECT name, schema_id, create_date FROM sys.objects ;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 0) ;  
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 1) ;  
GO  

B. Połączenie funkcji sys.dm_exec_describe_first_result_set_for_object z tabelą lub widokiem

Poniższy przykład wykorzystuje zarówno widok katalogu sys.procedures, jak i funkcję sys.dm_exec_describe_first_result_set_for_object do wyświetlania metadanych dla zbiorów wyników wszystkich procedur przechowywanych w bazie AdventureWorks2025 danych.

USE AdventureWorks2022;  
GO  
  
SELECT p.name, r.*   
FROM sys.procedures AS p  
CROSS APPLY sys.dm_exec_describe_first_result_set_for_object(p.object_id, 0) AS r;  
GO  
  

Zobacz też

sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set (Transact-SQL)