Udostępnij za pomocą


sys.dm_exec_describe_first_result_set (Transact-SQL)

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

Ta dynamiczna funkcja zarządzania przyjmuje zdanie Transact-SQL jako parametr i opisuje metadane pierwszego zbioru wyników dla tego zatwierdzenia.

sys.dm_exec_describe_first_result_set ma tę samą definicję zbioru wyników co sys.dm_exec_describe_first_result_set_for_object (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(@tsql, @params, @include_browse_information)  

Arguments

@tsql
Co najmniej jedna instrukcja Transact-SQL. Transact-SQL_batch może być nvarchar(n) lub nvarchar(max).

@params
@params dostarcza ciąg deklaracji parametrów dla Transact-SQL partii, podobnie jak sp_executesql. Parametry mogą być nvarchar(n) lub nvarchar(max).

To jeden ciąg zawierający definicje wszystkich parametrów osadzonych w Transact-SQL_batch. Ciąg musi być stałą Unicode lub zmienną Unicode. Każda definicja parametru składa się z nazwy parametru i typu danych. n jest symbolem zastępczym wskazującym dodatkowe definicje parametrów. Każdy parametr określony w stmt musi być zdefiniowany w @params. Jeśli polecenie lub partia Transact-SQL w instrukcji nie zawiera parametrów, @params nie jest wymagane. NULL jest domyślną wartością tego parametru.

@include_browse_information
Jeśli ustawimy na 1, każde zapytanie jest analizowane tak, jakby miało opcję FOR BROWSE na zapytaniu. Zwracane są dodatkowe kolumny kluczy oraz informacje z tabeli źródłowych.

Zwracana tabela

Te wspólne metadane są zwracane jako zestaw wyników. Jeden wiersz dla każdej kolumny w metadanych wyników opisuje typ i nieważność kolumny w formacie pokazanym w poniższej tabeli. 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, że kolumna jest dodatkową kolumną dodaną do przeglądania i celów informacyjnych, 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ć. Jeśli nie, będzie zawierać NULL.
is_nullable bit Zawiera następujące wartości:

Wartość 1, jeśli kolumna pozwala na NULL.

Wartość 0, jeśli kolumna nie pozwala na NULL.

Wartość 1, jeśli nie można ustalić, że kolumna dopuszcza NULL.
system_type_id int Zawiera system_type_id typu danych kolumny zgodnie z 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ę i 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 typ danych jest typem CLR zdefiniowanym przez użytkownika, w tej kolumnie zwraca się 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 zwraca 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 zwraca 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 zwraca 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 zwraca 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 ma typ ciągu określający wielka literę. Zwraca 0, jeśli nie jest taka.
is_fixed_length_clr_type bit Zwraca 1, jeśli kolumna jest typu CLR o stałej długości. Zwraca 0, jeśli nie jest taka.
source_server sysname Nazwa serwera pochodzenia (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ę ustalić, 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 pochodzenia zwracana przez kolumnę wyników. 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 podstawowe ograniczenia), oraz 0, jeśli nie jest. Zwraca NULL, jeśli nie można ustalić, że kolumna jest częścią unikalnego indeksu. Jest wypełniany 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 określić, czy 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 znajduje się w KOLEJNOŚCI WEDŁUG listy. 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. NULL jest zwracany, 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ę. Jeśli nie wystąpił żaden błąd, kolumna zawiera NULL.
error_severity int Zawiera ostrość zwracaną przez funkcję. Jeśli nie wystąpił żaden błąd, kolumna zawiera NULL.
error_state int Zawiera komunikat stanu. zwraca się 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_TYPE_NOT_SUPPORTED @object_id przekazany funkcji nie jest obsługiwany (czyli nie jest procedurą przechowywaną)
13 OBJECT_DOES_NOT_EXIST @object_id przekazany funkcji nie był obecny w katalogu systemowym.

Permissions

Wymaga zgody na wykonanie argumentu @tsql.

Przykłady

Dodatkowe przykłady w sp_describe_first_result_set ( Transact-SQL) można dostosować do sys.dm_exec_describe_first_result_set.

A. Zwracanie informacji o jednym Transact-SQL oświadczeniu

Poniższy kod zwraca informacje o wynikach Transact-SQL instrukcji.

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_exec_describe_first_result_set  
(N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0) ;  

B. Zwracanie informacji o procedurze

Poniższy przykład tworzy procedurę przechowywaną o nazwie pr_TestProc, 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.

USE AdventureWorks2022;  
GO  
  
CREATE PROC Production.TestProc  
AS  
SELECT Name, ProductID, Color FROM Production.Product ;  
SELECT Name, SafetyStockLevel, SellStartDate FROM Production.Product ;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set  
('Production.TestProc', NULL, 0) ;  

C. Zwracanie metadanych z partii zawierającej wiele instrukcji

Poniższy przykład ocenia partię zawierającą dwa Transact-SQL instrukcje. Zbiór wyników opisuje pierwszy zwrócony zbiór wyników.

USE AdventureWorks2022;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set(  
N'SELECT CustomerID, TerritoryID, AccountNumber FROM Sales.Customer WHERE CustomerID = @CustomerID;  
SELECT * FROM Sales.SalesOrderHeader;',  
N'@CustomerID int', 0) AS a;  
GO  

Zobacz też

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