Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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)