Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Tato dynamická správa přijímá Transact-SQL příkaz jako parametr a popisuje metadata první výsledné sady pro daný příkaz.
sys.dm_exec_describe_first_result_set má stejnou definici množiny výsledků jako sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) a je podobný sp_describe_first_result_set (Transact-SQL).
Syntaxe
sys.dm_exec_describe_first_result_set(@tsql, @params, @include_browse_information)
Arguments
@tsql
Jeden nebo více příkazů Transact-SQL.
Transact-SQL_batch může být nvarchar(n) nebo nvarchar(max).
@params
@params poskytuje deklarační řetězec parametrů pro Transact-SQL dávku, podobně jako sp_executesql. Parametry mohou být nvarchar(n) nebo nvarchar(max).
Je jeden řetězec, který obsahuje definice všech parametrů vložených do Transact-SQL_batch. Řetězec musí být buď konstanta Unicode, nebo proměnná Unicode. Každá definice parametru se skládá z názvu parametru a datového typu. n je zástupný symbol označující další definice parametrů. Každý parametr specifikovaný ve stmt musí být definován v @params. Pokud příkaz nebo batch Transact-SQL ve příkazu neobsahuje parametry, @params není vyžadován. NULL je výchozí hodnota pro tento parametr.
@include_browse_information
Pokud je dotaz nastaven na 1, je analyzován, jako by měl možnost PRO PROHLÍŽENÍ. Jsou vráceny další klíčové sloupce a informace o zdrojové tabulce.
Vrácená tabulka
Tato společná metadata se vracejí jako výsledná sada. Jeden řádek pro každý sloupec v metadatech výsledků popisuje typ a neplatnost sloupce ve formátu uvedeném v následující tabulce. Pokud první příkaz neexistuje pro každou řídicí cestu, vrátí se výsledná množina s nulovým řádkem.
| Název sloupce | Datový typ | Description |
|---|---|---|
| is_hidden | bit | Specifikuje, že sloupec je další sloupec přidaný pro prohlížení a informační účely, který se ve výsledku ve skutečnosti neobjevuje. |
| column_ordinal | int | Obsahuje ordinální pozici sloupce ve výsledné množině. Pozice prvního sloupce bude určena jako 1. |
| název | sysname | Obsahuje název sloupce, pokud lze určit jméno. Pokud ne, bude obsahovat NULL. |
| is_nullable | bit | Obsahuje následující hodnoty: Hodnota 1, pokud sloupec umožňuje NULL. Hodnota 0, pokud sloupec neumožňuje NULL. Hodnota 1, pokud nelze určit, že sloupec umožňuje NULL. |
| system_type_id | int | Obsahuje system_type_id sloupcového datového typu, jak je specifikováno v sys.types. U typů CLR, i když sloupec system_type_name vrátí NULL, tento sloupec vrátí hodnotu 240. |
| system_type_name | nvarchar(256) | Obsahuje název a argumenty (například délku, přesnost, měřítko), specifikované pro datový typ sloupce. Pokud je datový typ uživatelem definovaný alias, zde je specifikován základní systémový typ. Pokud je datový typ uživatelem definovaný CLR, v tomto sloupci se vrací NULL. |
| max_length | smallint | Maximální délka sloupce (v bajtech). -1 = Datový typ sloupce je varchar(max), nvarchar(max), varbinary(max) nebo xml. U textových sloupců bude hodnota max_length 16 nebo hodnota nastavená sp_tableoption 'text in line'. |
| přesnost | tinyint | Přesnost sloupce, pokud je založena na číslech. Jinak vrací 0. |
| scale | tinyint | Měřítko sloupce, pokud je založeno na číslech. Jinak vrací 0. |
| collation_name | sysname | Název třídění sloupce, pokud je založeno na znacích. Jinak vrací NULL. |
| user_type_id | int | Pro typy CLR a alias, obsahuje user_type_id datového typu sloupce, jak je specifikováno v sys.types. Jinak je NULL. |
| user_type_database | sysname | Pro typy CLR a alias, obsahuje název databáze, ve které je typ definován. Jinak je NULL. |
| user_type_schema | sysname | Pro CLR a aliasové typy obsahuje název schématu, ve kterém je typ definován. Jinak je NULL. |
| user_type_name | sysname | Pro CLR a aliasy obsahuje název typu. Jinak je NULL. |
| assembly_qualified_type_name | nvarchar(4000) | Pro CLR typy vrací název assembleru a třídu definující typ. Jinak je NULL. |
| xml_collection_id | int | Obsahuje xml_collection_id datového typu sloupce, jak je specifikováno v sys.columns. Tento sloupec vrací NULL, pokud typ vrácený není přiřazen ke skupině XML schématu. |
| xml_collection_database | sysname | Obsahuje databázi, ve které je definována XML kolekce schémat spojená s tímto typem. Tento sloupec vrací NULL, pokud typ vrácený není přiřazen ke skupině XML schématu. |
| xml_collection_schema | sysname | Obsahuje schéma, ve kterém je definována XML kolekce schémat spojená s tímto typem. Tento sloupec vrací NULL, pokud typ vrácený není přiřazen ke skupině XML schématu. |
| xml_collection_name | sysname | Obsahuje název kolekce XML schématu spojeného s tímto typem. Tento sloupec vrací NULL, pokud typ vrácený není přiřazen ke skupině XML schématu. |
| is_xml_document | bit | Vrátí 1, pokud je vrácený datový typ XML a tento typ je zaručeně kompletní XML dokument (včetně kořenového uzlu), na rozdíl od XML fragmentu. Jinak vrací 0. |
| is_case_sensitive | bit | Vrátí 1, pokud je sloupec typu řetězce citlivého na velká písmena. Pokud není, vrátí 0. |
| is_fixed_length_clr_type | bit | Vrátí 1, pokud je sloupec typu CLR s pevnou délkou. Pokud není, vrátí 0. |
| source_server | sysname | Název původního serveru (pokud pochází ze vzdáleného serveru). Název je uveden tak, jak se objevuje v sys.servers. Vrátí NULL, pokud sloupec pochází z lokálního serveru nebo pokud nelze určit, ze kterého serveru pochází. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení. |
| source_database | sysname | Název původní databáze vrácený sloupcem v tomto výsledku. Pokud nelze databázi určit, vrátí NULL. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení. |
| source_schema | sysname | Název původního schématu vrácený sloupcem v tomto výsledku. Vrátí NULL, pokud schéma nelze určit. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení. |
| source_table | sysname | Název původní tabulky vrácené sloupcem v tomto výsledku. Pokud tabulku nelze určit, vrátí NULL. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení. |
| source_column | sysname | Název sloupce původního sloupce vráceného sloupcem výsledků. Vrátí NULL, pokud nelze sloupec určit. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení. |
| is_identity_column | bit | Vrátí 1, pokud je sloupec identifikační, a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je identitní sloupec. |
| is_part_of_unique_key | bit | Vrátí 1, pokud je sloupec součástí jedinečného indexu (včetně jedinečných a primárních omezení), a 0, pokud není. Vrátí NULL, pokud nelze určit, že sloupec je součástí unikátního indexu. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení. |
| is_updateable | bit | Vrátí 1, pokud je sloupec aktualizovatelný, a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je aktualizovatelný. |
| is_computed_column | bit | Vrátí 1, pokud je sloupec vypočtený, a 0, pokud ne. Vrátí NULL, pokud nelze určit, zda je sloupec vypočtený. |
| is_sparse_column_set | bit | Vrátí 1, pokud je sloupec řídký, a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je součástí množiny řídkých sloupců. |
| ordinal_in_order_by_list | smallint | Pozice tohoto sloupce je v seznamu ORDER BY. Vrátí NULL, pokud se sloupec neobjevuje v seznamu ORDER BY, nebo pokud seznam ORDER BY nelze jednoznačně určit. |
| order_by_list_length | smallint | Délka seznamu ORDER BY. NULL se vrátí, pokud neexistuje seznam ORDER BY nebo pokud seznam ORDER BY nelze jednoznačně určit. Všimněte si, že tato hodnota bude stejná pro všechny řádky vrácené o sp_describe_first_result_set. |
| order_by_is_descending | smallint NULL | Pokud ordinal_in_order_by_list není NULL, sloupec order_by_is_descending hlásí směr klauzule ORDER BY pro tento sloupec. Jinak hlásí NULL. |
| error_number | int | Obsahuje chybové číslo vrácené funkcí. Pokud chyba nenastala, sloupec bude obsahovat NULL. |
| error_severity | int | Obsahuje závažnost vrácenou funkcí. Pokud chyba nenastala, sloupec bude obsahovat NULL. |
| error_state | int | Obsahuje zprávu o stavu. vráceno funkcí. Pokud chyba nenastala, sloupec bude obsahovat NULL. |
| error_message | nvarchar(4096) | Obsahuje zprávu vrácenou funkcí. Pokud chyba nenastala, sloupec bude obsahovat NULL. |
| error_type | int | Obsahuje celé číslo představující vrácenou chybu. Mapy na error_type_desc. Viz seznam v sekci poznámky. |
| error_type_desc | nvarchar(60) | Obsahuje krátký řetězec velkých písmen reprezentující vrácenou chybu. Mapy do error_type. Viz seznam v sekci poznámky. |
Poznámky
Tato funkce používá stejný algoritmus jako sp_describe_first_result_set. Pro více informací viz sp_describe_first_result_set (Transact-SQL).
Následující tabulka uvádí typy chyb a jejich popisy
| error_type | error_type | Description |
|---|---|---|
| 1 | RŮZNÉ | Všechny chyby, které nejsou jinak popsány. |
| 2 | Syntaktika | V dávce došlo k chybě v syntaxi. |
| 3 | CONFLICTING_RESULTS | Výsledek nebylo možné určit kvůli konfliktu mezi dvěma možnými prvními tvrzeními. |
| 4 | DYNAMIC_SQL | Výsledek nebylo možné určit kvůli dynamickému SQL, které by mohlo potenciálně vrátit první výsledek. |
| 5 | CLR_PROCEDURE | Výsledek nebylo možné určit, protože uložená procedura v CLR by mohla potenciálně vrátit první výsledek. |
| 6 | CLR_TRIGGER | Výsledek nebylo možné určit, protože spouštěč CLR by mohl potenciálně vrátit první výsledek. |
| 7 | EXTENDED_PROCEDURE | Výsledek nebylo možné určit, protože rozšířená uložená procedura by mohla potenciálně vrátit první výsledek. |
| 8 | UNDECLARED_PARAMETER | Výsledek nelze určit, protože datový typ jednoho nebo více sloupců výsledné sady může potenciálně záviset na nedeklarovaném parametru. |
| 9 | REKURZE | Výsledek nebylo možné určit, protože batch obsahuje rekurzivní tvrzení. |
| 10 | TEMPORARY_TABLE | Výsledek nebylo možné určit, protože batch obsahuje dočasnou tabulku a není podporován sp_describe_first_result_set . |
| 11 | UNSUPPORTED_STATEMENT | Výsledek nebylo možné určit, protože batch obsahuje příkaz, který není podporován sp_describe_first_result_set (např. FETCH, REVERT atd.). |
| 12 | OBJECT_TYPE_NOT_SUPPORTED | @object_id předaný funkci není podporován (tj. není uloženou procedurou) |
| 13 | OBJECT_DOES_NOT_EXIST | @object_id předávaný funkci nebyl v katalogu systému nalezen. |
Povolení
Vyžaduje povolení k provedení @tsql argumentu.
Examples
Další příklady v tématu sp_describe_first_result_set (Transact-SQL) lze přizpůsobit pro použití sys.dm_exec_describe_first_result_set.
A. Vrácení informací o jednom Transact-SQL výroku
Následující kód vrací informace o výsledcích Transact-SQL příkazu.
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. Vrácení informací o postupu
Následující příklad vytváří uloženou proceduru s názvem pr_TestProc, která vrací dvě množiny výsledků. Příklad pak ukazuje, že sys.dm_exec_describe_first_result_set vrací informace o první množině výsledků v postupu.
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. Vrácení metadat z dávky, která obsahuje více příkazů
Následující příklad vyhodnocuje dávku obsahující dva Transact-SQL příkazy. Výsledná množina popisuje první vrácenou množinu výsledků.
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
Viz také
sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)