sys.dm_exec_describe_first_result_set (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Denna dynamiska hanteringsfunktion tar ett Transact-SQL-uttalande som parameter och beskriver metadata för den första resultatuppsättningen för satsen.

sys.dm_exec_describe_first_result_set har samma definition av resultatmängder som sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) och liknar sp_describe_first_result_set (Transact-SQL).

Transact-SQL syntaxkonventioner

Syntax

  
sys.dm_exec_describe_first_result_set(@tsql, @params, @include_browse_information)  

Arguments

@tsql
En eller flera Transact-SQL-instruktioner. Transakt-SQL_batch 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).

Är en sträng som innehåller definitionerna av alla parametrar som har bäddats in i Transact-SQL_batch. 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-satsen eller batchen i satsen inte innehåller parametrar krävs @params inte. NULL är standardvärdet för denna parameter.

@include_browse_information
Om den är inställd på 1 analyseras varje fråga som om den har ett FÖR BLÄDDER-alternativ på frågan. Ytterligare nyckelkolumner och information om källtabeller returneras.

Tabell returnerad

Denna gemensamma metadata returneras som en resultatuppsättning. En rad för varje kolumn i resultatmetadata beskriver typen och nullbarheten för kolumnen i formatet som visas i följande tabell. Om den första satsen inte existerar för varje kontrollväg returneras en resultatmängd med noll rader.

Kolumnnamn Datatyp Description
is_hidden bit Specificerar att kolumnen är en extra kolumn som lagts till för bläddrings- och informationsändamål men 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, kommer den att innehålla NULL.
is_nullable bit Innehåller följande värden:

Värde 1 om kolumnen tillåter NULL.

Värde 0 om kolumnen inte tillåter NULLs.

Värde 1 om det inte kan fastställas att kolumnen tillåter NULLs.
system_type_id int Innehåller system_type_id av kolumndatatypen enligt sys.types. För CLR-typer, även om kolumnen system_type_name returnerar NULL, kommer denna kolumn att returnera värdet 240.
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 returneras NULL 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 kommer max_length värdet att vara 16 eller värdet som sätts av sp_tableoption 'text i rad'.
precision tinyint Kolumnens precision om numeriskt. Annars returnerar 0.
scale tinyint Kolumnskalan om den är numerisk. Annars returnerar 0.
collation_name sysname Namn på kolumnens sortering om den är teckenbaserad. Annars returnerar den NULL.
user_type_id int För CLR- och aliastyper innehåller user_type_id av kolumnens datatyp enligt 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 av kolumnens datatyp enligt sys.columns. Denna kolumn returnerar NULL om den returnerade typen inte är associerad med en XML-schemasamling.
xml_collection_database sysname Innehåller databasen där XML-schemasamlingen kopplad till denna typ är definierad. Denna kolumn returnerar NULL om den returnerade typen inte är associerad med en XML-schemasamling.
xml_collection_schema sysname Innehåller schemat där XML-schemasamlingen associerad med denna typ definieras. Denna kolumn returnerar NULL om den returnerade typen inte är associerad med en XML-schemasamling.
xml_collection_name sysname Innehåller namnet på XML-schemasamlingen som är kopplad till denna typ. Denna kolumn returnerar NULL om den returnerade typen 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 returnerar 0.
is_case_sensitive bit Returnerar 1 om kolumnen är av en mellanlägeskänslig strängtyp. Returnerar 0 om det inte är det.
is_fixed_length_clr_type bit Returnerar 1 om kolumnen är av CLR-typ med fast längd. 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 det inte kan avgöras på vilken server den kommer ifrå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 bestämmas. 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 bestämmas. 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 bestämmas. 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 bestämmas. 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 kan fastställas 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 kan fastställas 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 kan fastställas att kolumnen är uppdaterabar.
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 är i ORDNING EFTER listan. Returnerar NULL om kolumnen inte förekommer i ORDER BY-listan, eller om ORDER BY-listan inte kan bestämmas entyd.
order_by_list_length smallint Längden på ORDER BY-listan. NULL returneras om det inte finns någon ORDER BY-lista eller om ORDER BY-listan inte kan bestämmas entydigt. Observera att detta värde är detsamma för alla rader som returneras av sp_describe_first_result_set.
order_by_is_descending smallint NULL Om ordinal_in_order_by_list inte är NULL rapporterar kolumnen order_by_is_descending riktningen för ORDER BY-klausulen för denna kolumn. Annars rapporterar den NULL.
error_number int Innehåller felnumret som returneras av funktionen. Om inget fel inträffade kommer kolumnen att innehålla NULL.
error_severity int Innehåller den allvarlighetsgrad som funktionen returnerar. Om inget fel inträffade kommer kolumnen att innehålla NULL.
error_state int Innehåller tillståndsmeddelandet. Återvände från evenemanget. Om inget fel inträffade kommer kolumnen att innehålla NULL.
error_message Nvarchar(4096) Innehåller meddelandet som returneras av funktionen. Om inget fel inträffade kommer kolumnen att innehålla NULL.
error_type int Innehåller ett heltal som representerar felet som returneras. Kartor 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. Kartor 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 (Transact-SQL).

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 propuder 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 odeklarerad parameter.
9 REKURSION Resultatet kunde inte bestämmas eftersom batchen innehåller ett rekursivt påstående.
10 TEMPORARY_TABLE Resultatet kunde inte bestämmas eftersom batchen innehåller en tillfällig tabell och inte stöds av sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT Resultatet kunde inte fastställas eftersom batchen innehåller en sats som inte stöds av sp_describe_first_result_set (t.ex. FETCH, REVERT etc.).
12 OBJECT_TYPE_NOT_SUPPORTED Den @object_id som skickas till funktionen stöds inte (dvs. inte en lagrad procedur)
13 OBJECT_DOES_NOT_EXIST Den @object_id som överfördes till funktionen hittades inte i systemkatalogen.

Permissions

Kräver tillstånd för att utföra @tsql argumentet.

Examples

Ytterligare exempel i ämnet sp_describe_first_result_set (Transact-SQL) kan anpassas för att använda sys.dm_exec_describe_first_result_set.

A. Att returnera information om ett enda Transact-SQL påstående

Följande kod returnerar information om resultaten av ett Transact-SQL-uttalande.

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. Att returnera information om en procedur

Följande exempel skapar en lagrad procedur kallad pr_TestProc som returnerar två resultatmängder. Sedan visar exemplet att sys.dm_exec_describe_first_result_set returnerar information om den första resultatmängden i proceduren.

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

Se även

sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)