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á řídicí funkce přijímá Transact-SQL příkaz jako parametr a vrací metadata pro první sadu výsledků tohoto příkazu.
sys.dm_exec_describe_first_result_set vrací stejnou definici výsledné množiny jako sys.dm_exec_describe_first_result_set_for_object a je podobný jako sp_describe_first_result_set.
Syntaxe
sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)
Arguments
@tsql
Jeden nebo více příkazů Transact-SQL. @tsql várka 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).
Jeden řetězec, který obsahuje definice všech parametrů vložených do @tsql dávky. Ř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 Transact-SQL nebo dávka v příkazu neobsahují parametry, @params se nevyžaduje.
NULL je výchozí hodnota tohoto parametru.
@include_browse_information
Pokud je nastaven na 1, každý dotaz je analyzován, jako by měl na dotazu možnost FOR BROWSE . Výsledkem jsou další klíčové sloupce a informace o zdrojové tabulce.
Vrácená tabulka
Funkce vrací tato běžná metadata jako výslednou sadu. Každý řádek odpovídá sloupci v metadatech výsledků a 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, funkce vrátí množinu výsledků s nulovým řádkem.
| Název sloupce | Datový typ | Description |
|---|---|---|
is_hidden |
bit | Specifikuje, že sloupec je navíc 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 je určena jako 1. |
name |
sysname | Obsahuje název sloupce, pokud lze určit jméno. Pokud ne, je NULLto . |
is_nullable |
bit | Obsahuje následující hodnoty: Vrátí, 1 pokud sloupec povoluje NULL hodnoty.Vrátí, 0 pokud sloupec nepovoluje NULL hodnoty.Vrátí, 1 pokud nelze určit, že sloupec povoluje NULL hodnoty. |
system_type_id |
int | Obsahuje sloupcový system_type_id datový typ specifikovaný v .sys.types Pro typy CLR, i když sloupec system_type_name vrací NULL, tento sloupec vrací 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, NULL se v tomto sloupci vrací . |
max_length |
smallint | Maximální délka sloupce (v bajtech).-1 = datový typ sloupec je varchar(max), nvarchar(max), varbinary(max)nebo xml.Pro textové sloupce je hodnota max_length , 16nebo hodnota nastavená .sp_tableoption 'text in row' |
precision |
tinyint | Přesnost sloupce, pokud je založena na číslech. V opačném případě vrátí 0. |
scale |
tinyint | Měřítko sloupce, pokud je založeno na číslech. V opačném případě vrátí 0. |
collation_name |
sysname | Název třídění sloupce, pokud je založeno na znacích. V opačném případě vrátí NULL. |
user_type_id |
int | Pro typy CLR a alias, obsahuje z 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 uvedeno v sys.columns. Tento sloupec vrátí, NULL pokud vrácený typ není přiřazen ke sbírce 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 vrátí, NULL pokud vrácený typ není přiřazen ke sbírce 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 vrátí, NULL pokud vrácený typ není přiřazen ke sbírce XML schématu. |
xml_collection_name |
sysname | Obsahuje název kolekce XML schématu spojeného s tímto typem. Tento sloupec vrátí, NULL pokud vrácený typ není přiřazen ke sbírce 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). V opačném případě vrátí 0. |
is_case_sensitive |
bit | Vrátí, 1 pokud je sloupec typu řetězce citlivého na velikost písmen. Vrať, 0 pokud ne. |
is_fixed_length_clr_type |
bit | Vrátí, 1 pokud je sloupec typu CLR s pevnou délkou. Vrať, 0 pokud ne. |
source_server |
sysname | Název původního serveru (pokud pochází ze vzdáleného serveru). Název je uveden tak, jak se zobrazí v sys.servers. Vrátí NULL, pokud sloupec pochází z místního serveru nebo pokud se nedá určit, na kterém 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. Vrátí NULL, pokud databázi nelze určit. 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. Vrátí NULL, pokud tabulku nelze určit. 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 sloupec nelze 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í sloupec, a 0, pokud ne. Vrátí NULL, pokud se nedá určit, že sloupec je sloupec identity. |
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 se nedá určit, že je sloupec součástí jedinečné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 se nedá určit, že sloupec je aktualizovatelný. |
is_computed_column |
bit | Vrátí, 1 pokud je sloupec vypočítaný sloupec, a 0, pokud ne. Vrátí, NULL pokud nelze určit, zda je sloupec vypočítaný sloupec. |
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 v seznamu neobjeví ORDER BY , nebo pokud ORDER BY nelze seznam jednoznačně určit. |
order_by_list_length |
smallint | Délka seznamu ORDER BY .
NULL se vrací, pokud seznam neexistuje ORDER BY nebo pokud nelze ORDER BY seznam jednoznačně určit. Tato hodnota je stejná pro všechny řádky vrácené sp_describe_first_result_set. |
order_by_is_descending |
smallint | Pokud ordinal_in_order_by_list není NULL, sloupec order_by_is_descending hlásí směr klauzule ORDER BY pro tento sloupec. V opačném případě hlásí NULL. |
error_number |
int | Obsahuje chybové číslo vrácené funkcí. Pokud chyba nenastala, sloupec obsahuje NULL. |
error_severity |
int | Obsahuje závažnost vrácenou funkcí. Pokud chyba nenastala, sloupec obsahuje NULL. |
error_state |
int | Obsahuje zprávu o stavu vrácenou funkcí. Pokud chyba nenastala, sloupec obsahuje NULL. |
error_message |
nvarchar(4096) | Obsahuje zprávu vrácenou funkcí. Pokud chyba nenastala, sloupec obsahuje NULL. |
error_type |
int | Obsahuje celé číslo představující vrácenou chybu. Mapuje 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. Mapuje na 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.
Následující tabulka uvádí typy chyb a jejich popisy.
error_type |
error_type |
Description |
|---|---|---|
1 |
MISC |
Všechny chyby, které nejsou jinak popsány. |
2 |
SYNTAX |
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 nemohl být určen, protože typ dat jednoho nebo více sloupců výsledné sady potenciálně závisí na nedeklarovaném parametru. |
9 |
RECURSION |
Výsledek nebylo možné určit, protože batch obsahuje rekurzivní příkaz. |
10 |
TEMPORARY_TABLE |
Výsledek nebylo možné určit, protože dávka obsahuje dočasnou tabulku a není podporována sp_describe_first_result_set . |
11 |
UNSUPPORTED_STATEMENT |
Výsledek nemohl být určen, protože batch obsahuje příkaz, který není podporován ( sp_describe_first_result_set například FETCH, REVERT, atd.). |
12 |
OBJECT_TYPE_NOT_SUPPORTED |
Procedura @object_id předaná funkci není podporována (tedy není uloženou procedurou). |
13 |
OBJECT_DOES_NOT_EXIST |
Předání @object_id funkci není v katalogu systému k nalezení. |
Povolení
Vyžaduje povolení k provedení @tsql argumentu.
Examples
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
Příklady v článku sp_describe_first_result_set můžete upravit a použít .sys.dm_exec_describe_first_result_set
A. Vraťte informace o jednom Transact-SQL výpisu
Následující kód vrací informace o výsledcích Transact-SQL příkazu.
USE @AdventureWorks2025;
SELECT *
FROM sys.dm_exec_describe_first_result_set (
N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0
);
B. Vraťte informace o postupu
Následující příklad vytváří uloženou proceduru s názvem , pr_TestProc která vrací dvě množiny výsledků. Pak příklad ukazuje, že sys.dm_exec_describe_first_result_set vrací informace o první množině výsledků v postupu.
USE @AdventureWorks2025;
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. Vraťte metadata 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 AdventureWorks2025;
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;