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 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)