Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Denna dynamiska hanteringsfunktion tar ett Transact-SQL-uttalande som parameter och returnerar metadata för den första resultatuppsättningen av satsen.
sys.dm_exec_describe_first_result_set returnerar samma resultatmängdsdefinition som sys.dm_exec_describe_first_result_set_for_object och liknar sp_describe_first_result_set.
Transact-SQL syntaxkonventioner
Syntax
sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)
Arguments
@tsql
En eller flera Transact-SQL-instruktioner. Den @tsql batchen kan vara nvarchar(n) eller nvarchar(max).
@params
@params tillhandahåller en deklarationssträng för parametrar för Transact-SQL batchen, liknande sp_executesql. Parametrarna kan vara nvarchar(n) eller nvarchar(max).
En enda sträng som innehåller definitionerna av alla parametrar som är inbäddade i @tsql batchen. Strängen måste vara antingen en Unicode-konstant eller en Unicode-variabel. Varje parameterdefinition består av ett parameternamn och en datatyp.
n är en platshållare som anger ytterligare parameterdefinitioner. Varje parameter som anges i stmt måste definieras i @params. Om Transact-SQL-instruktionen eller batchen i -instruktionen inte innehåller parametrar krävs inte @params.
NULL är standardvärdet för den här parametern.
@include_browse_information
Om den är satt till 1 analyseras varje fråga som om den har ett FOR BROWSE alternativ på frågan. Resultatet inkluderar extra nyckelkolumner och källtabellsinformation.
Tabellen returneras
Funktionen returnerar denna gemensamma metadata som en resultatuppsättning. Varje rad motsvarar en kolumn i resultatmetadata och beskriver typen och nullbarheten för kolumnen i det format som visas i följande tabell. Om den första satsen inte existerar för varje kontrollväg returnerar funktionen en resultatmängd med noll rader.
| Kolumnnamn | Datatyp | Description |
|---|---|---|
is_hidden |
bit | Specificerar att kolumnen är en extra kolumn, tillagd för bläddrings- och informationsändamål, som faktiskt inte förekommer i resultatuppsättningen. |
column_ordinal |
int | Innehåller kolumnens ordinala position i resultatmängden. Positionen för den första kolumnen anges som 1. |
name |
sysname | Innehåller namnet på kolumnen om ett namn kan bestämmas. Om inte, så är NULLdet . |
is_nullable |
bit | Innehåller följande värden: Returnerar 1 om kolumnen tillåter NULL värden.Returnerar 0 om kolumnen inte tillåter NULL värden.Returnerar 1 om det inte går att bestämma att kolumnen tillåter NULL värden. |
system_type_id |
int | Innehåller kolumndatatypen system_type_id enligt specificerat i sys.types. För CLR-typer, även om kolumnen returnerar NULL, returnerar system_type_name240denna kolumn . |
system_type_name |
nvarchar(256) | Innehåller namn och argument (såsom längd, precision, skala), specificerade för kolumnens datatyp. Om datatypen är en användardefinierad aliastyp specificeras den underliggande systemtypen här. Om datatypen är en CLR-användardefinierad typ NULL returneras i denna kolumn. |
max_length |
smallint | Maximal längd (i byte) för kolumnen.-1 = Kolumndatatypen är varchar(max), nvarchar(max), varbinary(max)eller xml-.För textkolumner max_length är 16värdet , eller värdet som sätts av sp_tableoption 'text in row'. |
precision |
tinyint | Kolumnens precision om numeriskt. Annars returneras 0. |
scale |
tinyint | Kolumnskalan om den är numerisk. Annars returneras 0. |
collation_name |
sysname | Namn på kolumnens sortering om den är teckenbaserad. Annars returneras NULL. |
user_type_id |
int | För CLR- och aliastyper innehåller user_type_id av datatypen för kolumnen enligt beskrivningen i sys.types. Annars är NULL. |
user_type_database |
sysname | För CLR- och aliastyper innehåller namnet på databasen där typen är definierad. Annars är NULL. |
user_type_schema |
sysname | För CLR- och aliastyper innehåller namnet på schemat där typen definieras. Annars är NULL. |
user_type_name |
sysname | För CLR- och aliastyper innehåller namnet på typen. Annars är NULL. |
assembly_qualified_type_name |
nvarchar(4000) | För CLR-typer returneras namnet på sammansättningen och klassen som definierar typen. Annars är NULL. |
xml_collection_id |
int | Innehåller xml_collection_id för kolumnens datatyp enligt sys.columns. Den här kolumnen returnerar NULL om den typ som returneras inte är associerad med en XML-schemasamling. |
xml_collection_database |
sysname | Innehåller databasen där XML-schemasamlingen kopplad till denna typ är definierad. Den här kolumnen returnerar NULL om den typ som returneras inte är associerad med en XML-schemasamling. |
xml_collection_schema |
sysname | Innehåller schemat där XML-schemasamlingen associerad med denna typ definieras. Den här kolumnen returnerar NULL om den typ som returneras inte är associerad med en XML-schemasamling. |
xml_collection_name |
sysname | Innehåller namnet på XML-schemasamlingen som är kopplad till denna typ. Den här kolumnen returnerar NULL om den typ som returneras inte är associerad med en XML-schemasamling. |
is_xml_document |
bit | Returnerar 1 om den returnerade datatypen är XML och den typen garanteras vara ett komplett XML-dokument (inklusive en rotnod, till skillnad från ett XML-fragment). Annars returneras 0. |
is_case_sensitive |
bit | Returnerar 1 om kolumnen är av en kasuskänslig strängtyp. Returnerar 0 om det inte är det. |
is_fixed_length_clr_type |
bit | Returnerar 1 om kolumnen är av en CLR-typ med fast längde. Returnerar 0 om det inte är det. |
source_server |
sysname | Namnet på den ursprungliga servern (om den kommer från en fjärrserver). Namnet anges som det visas i sys.servers. Returnerar NULL om kolumnen kommer från den lokala servern eller om den inte kan fastställas vilken server den kommer från. Fylls endast om det efterfrågas information om att surfa. |
source_database |
sysname | Namnet på den ursprungliga databasen som returneras av kolumnen i detta resultat. Returnerar NULL om databasen inte kan fastställas. Fylls endast om det efterfrågas information om att surfa. |
source_schema |
sysname | Namnet på det ursprungliga schemat som returneras av kolumnen i detta resultat. Returnerar NULL om schemat inte kan fastställas. Fylls endast om det efterfrågas information om att surfa. |
source_table |
sysname | Namnet på den ursprungliga tabellen som returneras av kolumnen i detta resultat. Returnerar NULL om tabellen inte kan fastställas. Fylls endast om det efterfrågas information om att surfa. |
source_column |
sysname | Namnet på den ursprungliga kolumnen som returneras av resultatkolumnen. Returnerar NULL om kolumnen inte kan fastställas. Fylls endast om det efterfrågas information om att surfa. |
is_identity_column |
bit | Returnerar 1 om kolumnen är en identitetskolumn och 0 om inte. Returnerar NULL om det inte går att fastställa att kolumnen är en identitetskolumn. |
is_part_of_unique_key |
bit | Returnerar 1 om kolumnen är en del av ett unikt index (inklusive unika och primära begränsningar) och 0 om den inte är det. Returnerar NULL om det inte går att fastställa att kolumnen är en del av ett unikt index. Fylls endast om det efterfrågas information om att surfa. |
is_updateable |
bit | Returnerar 1 om kolumnen är uppdaterabar och 0 om inte. Returnerar NULL om det inte går att fastställa att kolumnen kan uppdateras. |
is_computed_column |
bit | Returnerar 1 om kolumnen är en beräknad kolumn och 0 om inte. Returnerar NULL om det inte kan avgöras om kolumnen är en beräknad kolumn. |
is_sparse_column_set |
bit | Returnerar 1 om kolumnen är en gles kolumn och 0 om inte. Returnerar NULL om det inte kan fastställas att kolumnen är en del av en gles kolumnmängd. |
ordinal_in_order_by_list |
smallint | Positionen för denna kolumn finns i ORDER BY listan. Returnerar NULL om kolumnen inte finns med i listan ORDER BY , eller om listan ORDER BY inte kan bestämmas entyd. |
order_by_list_length |
smallint | Längden på listan ORDER BY .
NULL returneras om det inte finns någon ORDER BY lista eller om ORDER BY listan inte kan bestämmas entydigt ut. Det här värdet är detsamma för alla rader som returneras av sp_describe_first_result_set. |
order_by_is_descending |
smallint | Om ordinal_in_order_by_list inte är NULLrapporterar kolumnen order_by_is_descending riktningen för ORDER BY-satsen för den här kolumnen. Annars rapporterar den NULL. |
error_number |
int | Innehåller felnumret som returneras av funktionen. Om inget fel inträffade innehåller NULLkolumnen . |
error_severity |
int | Innehåller den allvarlighetsgrad som funktionen returnerar. Om inget fel inträffade innehåller NULLkolumnen . |
error_state |
int | Innehåller tillståndsmeddelandet som returneras av funktionen. Om inget fel inträffade innehåller NULLkolumnen . |
error_message |
Nvarchar(4096) | Innehåller meddelandet som returneras av funktionen. Om inget fel inträffade innehåller NULLkolumnen . |
error_type |
int | Innehåller ett heltal som representerar felet som returneras. Mappar till error_type_desc. Se listan under kommentarer. |
error_type_desc |
nvarchar(60) | Innehåller en kort versaliserande sträng som representerar felet som returneras. Mappar till error_type. Se listan under kommentarer. |
Anmärkningar
Denna funktion använder samma algoritm som sp_describe_first_result_set. För mer information, se sp_describe_first_result_set.
Följande tabell listar feltyperna och deras beskrivningar.
error_type |
error_type |
Description |
|---|---|---|
1 |
MISC |
Alla fel som inte annars beskrivs. |
2 |
SYNTAX |
Ett syntaxfel uppstod i batchen. |
3 |
CONFLICTING_RESULTS |
Resultatet kunde inte fastställas på grund av en konflikt mellan två möjliga första påståenden. |
4 |
DYNAMIC_SQL |
Resultatet kunde inte fastställas på grund av dynamisk SQL som potentiellt kunde returnera det första resultatet. |
5 |
CLR_PROCEDURE |
Resultatet kunde inte fastställas eftersom en CLR-lagrad procedur potentiellt kunde returnera det första resultatet. |
6 |
CLR_TRIGGER |
Resultatet kunde inte fastställas eftersom en CLR-trigger potentiellt kunde returnera det första resultatet. |
7 |
EXTENDED_PROCEDURE |
Resultatet kunde inte fastställas eftersom en utökad lagrad procedur potentiellt kunde returnera det första resultatet. |
8 |
UNDECLARED_PARAMETER |
Resultatet kunde inte bestämmas eftersom datatypen för en eller flera av resultatuppsättningens kolumner potentiellt beror på en icke-deklarerad parameter. |
9 |
RECURSION |
Resultatet kunde inte bestämmas eftersom batchen innehåller ett rekursivt påstående. |
10 |
TEMPORARY_TABLE |
Resultatet kunde inte avgöras eftersom batchen innehåller en tillfällig tabell och inte stöds av sp_describe_first_result_set . |
11 |
UNSUPPORTED_STATEMENT |
Resultatet kunde inte avgöras eftersom batchen innehåller ett uttalande som inte stöds av sp_describe_first_result_set (till exempel FETCH, REVERT, osv.). |
12 |
OBJECT_TYPE_NOT_SUPPORTED |
Den @object_id passade funktionen stöds inte (det vill säga, det är inte en lagrad procedur). |
13 |
OBJECT_DOES_NOT_EXIST |
Den @object_id passade funktionen finns inte i systemkatalogen. |
Permissions
Kräver behörighet att köra argumentet @tsql.
Examples
Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
Du kan anpassa exemplen i sp_describe_first_result_set artikeln för att använda sys.dm_exec_describe_first_result_setdem.
A. Returneringsinformation om ett enda Transact-SQL uttalande
Följande kod returnerar information om resultaten av ett Transact-SQL-uttalande.
USE @AdventureWorks2025;
SELECT *
FROM sys.dm_exec_describe_first_result_set (
N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0
);
B. Returneringsinformation om en procedur
Följande exempel skapar en lagrad progé som returnerar pr_TestProc två resultatmängder. Sedan visar exemplet att returnerar sys.dm_exec_describe_first_result_set information om den första resultatmängden i proceduren.
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. Returnera metadata från en batch som innehåller flera satser
Följande exempel utvärderar en batch som innehåller två Transact-SQL satser. Resultatmängden beskriver den första resultatmängden som returnerats.
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;