Share via


sys.dm_exec_describe_first_result_set (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Deze dynamische beheerfunctie neemt een Transact-SQL-instructie als parameter en geeft de metadata terug voor de eerste resultaatset van de stelling.

sys.dm_exec_describe_first_result_set geeft dezelfde definitie van de resultaatset terug als sys.dm_exec_describe_first_result_set_for_object en is vergelijkbaar met sp_describe_first_result_set.

Transact-SQL syntaxis-conventies

Syntaxis

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

Arguments

@tsql

Een of meer Transact-SQL instructies. De @tsql batch kan nvarchar(n) of nvarchar(max) zijn.

@params

@params levert een declaratiestring voor parameters voor de Transact-SQL batch, vergelijkbaar met sp_executesql. Parameters kunnen nvarchar(n) of nvarchar(max) zijn.

Een enkele string die de definities bevat van alle parameters die in de @tsql batch zijn ingebed. De tekenreeks moet een Unicode-constante of een Unicode-variabele zijn. Elke parameterdefinitie bestaat uit een parameternaam en een gegevenstype. n is een tijdelijke aanduiding die aanvullende parameterdefinities aangeeft. Elke parameter die in stmt is gespecificeerd, moet in @params worden gedefinieerd. Als de Transact-SQL-instructie of batch in de instructie geen parameters bevat, is @params niet vereist. NULL is de standaardwaarde voor deze parameter.

@include_browse_information

Als deze op 1 staat, wordt elke query geanalyseerd alsof er een FOR BROWSE optie op de query is. Het resultaat bevat extra sleutelkolommen en brontabelinformatie.

Tabel geretourneerd

De functie geeft deze gemeenschappelijke metadata terug als een resultaatset. Elke rij komt overeen met een kolom in de resultaatmetadata en beschrijft het type en de neutraliteit van de kolom in het formaat dat in de volgende tabel wordt getoond. Als de eerste uitspraak niet bestaat voor elk controlepad, geeft de functie een resultaatset met nul rijen terug.

Kolomnaam Gegevenstype Description
is_hidden bit Geeft aan dat de kolom een extra kolom is, toegevoegd voor browsen en informatieve doeleinden, die niet daadwerkelijk in de resultaatset voorkomt.
column_ordinal int Bevat de ordinaalpositie van de kolom in de resultaatverzameling. De positie van de eerste kolom wordt gespecificeerd als 1.
name sysname Bevat de naam van de kolom als een naam kan worden bepaald. Zo niet, dan is NULLhet .
is_nullable bit Bevat de volgende waarden:

Geeft terug 1 als kolom waarden toestaat NULL .

Geeft terug 0 als de kolom geen waarden toestaat NULL .

Geeft terug 1 als niet kan worden vastgesteld dat de kolom waarden toestaat NULL .
system_type_id int Bevat het system_type_id van het kolomdatatype zoals gespecificeerd in sys.types. Voor CLR-typen, hoewel de system_type_name kolom teruggeeft NULL, geeft deze kolom .240
system_type_name nvarchar(256) Bevat de naam en argumenten (zoals lengte, precisie, schaal), gespecificeerd voor het datatype van de kolom.

Als het datatype een door de gebruiker gedefinieerd aliastype is, wordt het onderliggende systeemtype hier gespecificeerd.

Als het datatype een door CLR door de gebruiker gedefinieerd type is, NULL wordt in deze kolom teruggegeven.
max_length smallint Maximale lengte (in bytes) van de kolom.

-1 = Kolomgegevenstype is varchar(max), nvarchar(max), varbinary(max)of xml-.

Voor tekstkolommen is 16de max_length waarde , of de waarde die wordt gezet door sp_tableoption 'text in row'.
precision tinyint Precisie van de kolom als het numeriek is. Anders wordt 0geretourneerd.
scale tinyint Schaal van de kolom als het numeriek is. Anders wordt 0geretourneerd.
collation_name sysname Naam van de collatie van de kolom als het op karakter gebaseerd is. Anders wordt NULLgeretourneerd.
user_type_id int Voor CLR- en aliastypes bevat de user_type_id van het datatype van de kolom zoals gespecificeerd in sys.types. Anders is NULL.
user_type_database sysname Voor CLR- en aliastypes bevat het de naam van de database waarin het type is gedefinieerd. Anders is NULL.
user_type_schema sysname Voor CLR- en aliastypes bevat het de naam van het schema waarin het type is gedefinieerd. Anders is NULL.
user_type_name sysname Voor CLR- en aliastypes bevat de naam van het type. Anders is NULL.
assembly_qualified_type_name nvarchar(4000) Voor CLR-types geeft het de naam van de assembly en klasse die het type definieert, terug. Anders is NULL.
xml_collection_id int Bevat de xml_collection_id van het gegevenstype van de kolom zoals opgegeven in sys.columns. Deze kolom geeft terug NULL als het geretourneerde type niet gekoppeld is aan een XML-schemacollectie.
xml_collection_database sysname Bevat de database waarin de XML-schemacollectie die aan dit type is gekoppeld is gedefinieerd. Deze kolom geeft terug NULL als het geretourneerde type niet gekoppeld is aan een XML-schemacollectie.
xml_collection_schema sysname Bevat het schema waarin de XML-schemacollectie die aan dit type is gekoppeld is gedefinieerd. Deze kolom geeft terug NULL als het geretourneerde type niet gekoppeld is aan een XML-schemacollectie.
xml_collection_name sysname Bevat de naam van de XML-schemacollectie die aan dit type is gekoppeld. Deze kolom geeft terug NULL als het geretourneerde type niet gekoppeld is aan een XML-schemacollectie.
is_xml_document bit Geeft terug 1 als het geretourneerde datatype XML is en dat type gegarandeerd een volledig XML-document is (inclusief een root-node, in plaats van een XML-fragment). Anders wordt 0geretourneerd.
is_case_sensitive bit Geeft terug 1 als de kolom van een hoofdlettergevoelig stringtype is. Retourneren 0 als dat niet zo is.
is_fixed_length_clr_type bit Geeft terug 1 als de kolom van een CLR-type met vaste lengte is. Retourneren 0 als dat niet zo is.
source_server sysname Naam van de oorspronkelijke server (als deze afkomstig is van een externe server). De naam wordt gegeven zoals deze wordt weergegeven in sys.servers. Retourneert NULL als de kolom afkomstig is van de lokale server of als deze niet kan worden bepaald op welke server deze afkomstig is. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
source_database sysname Naam van de oorspronkelijke database die door de kolom in dit resultaat wordt teruggegeven. Retourneert NULL als de database niet kan worden bepaald. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
source_schema sysname Naam van het oorspronkelijke schema dat door de kolom in dit resultaat wordt teruggegeven. Retourneert NULL als het schema niet kan worden bepaald. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
source_table sysname Naam van de oorspronkelijke tabel die door de kolom in dit resultaat wordt teruggegeven. Retourneert NULL als de tabel niet kan worden bepaald. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
source_column sysname Naam van de oorspronkelijke kolom die door de resultaatkolom wordt teruggegeven. Retourneert NULL als de kolom niet kan worden bepaald. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
is_identity_column bit Geeft terug 1 als de kolom een identiteitskolom is en 0 als dat niet zo is. Retourneert NULL als deze niet kan worden vastgesteld dat de kolom een identiteitskolom is.
is_part_of_unique_key bit Geeft terug 1 als de kolom deel uitmaakt van een unieke index (inclusief unieke en primaire beperkingen) en 0 als dat niet zo is. Retourneert NULL als deze niet kan worden vastgesteld dat de kolom deel uitmaakt van een unieke index. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
is_updateable bit Geeft terug 1 als de kolom bijwerkbaar is en 0 als dat niet zo is. Retourneert NULL als deze niet kan worden vastgesteld dat de kolom kan worden bijgewerkt.
is_computed_column bit Geeft terug 1 als de kolom een berekende kolom is en 0 als dat niet zo is. Geeft terug NULL als het niet kan worden bepaald of de kolom een berekende kolom is.
is_sparse_column_set bit Geeft terug 1 als de kolom een dunne kolom is en 0 als dat niet zo is. Geeft aan NULL als niet kan worden vastgesteld dat de kolom deel uitmaakt van een sparse kolomverzameling.
ordinal_in_order_by_list smallint De positie van deze kolom staat in ORDER BY de lijst. Geeft terug NULL als de kolom niet in de ORDER BY lijst voorkomt, of als de ORDER BY lijst niet uniek kan worden bepaald.
order_by_list_length smallint De lengte van de ORDER BY lijst. NULL wordt teruggegeven als er geen ORDER BY lijst is of als de ORDER BY lijst niet uniek kan worden bepaald. Deze waarde is hetzelfde voor alle rijen die worden geretourneerd door sp_describe_first_result_set.
order_by_is_descending smallint Als de ordinal_in_order_by_list niet is NULL, rapporteert de order_by_is_descending kolom de richting van de ORDER BY component voor deze kolom. Anders wordt NULLgerapporteerd.
error_number int Bevat het foutnummer dat door de functie wordt teruggegeven. Als er geen fout is opgetreden, bevat NULLde kolom .
error_severity int Bevat de ernst die door de functie wordt teruggegeven. Als er geen fout is opgetreden, bevat NULLde kolom .
error_state int Bevat het statusbericht dat door de functie wordt teruggegeven. Als er geen fout is opgetreden, bevat NULLde kolom .
error_message Nvarchar(4096) Bevat het bericht dat door de functie wordt teruggegeven. Als er geen fout is opgetreden, bevat NULLde kolom .
error_type int Bevat een geheel getal dat de teruggegeven fout vertegenwoordigt. Wordt toegewezen aan error_type_desc. Zie de lijst onder opmerkingen.
error_type_desc nvarchar(60) Bevat een korte hoofdletterreeks die de teruggegeven fout weergeeft. Wordt toegewezen aan error_type. Zie de lijst onder opmerkingen.

Opmerkingen

Deze functie gebruikt hetzelfde algoritme als sp_describe_first_result_set. Voor meer informatie, zie sp_describe_first_result_set.

De volgende tabel geeft een overzicht van de fouttypen en hun beschrijvingen.

error_type error_type Description
1 MISC Allemaal fouten die niet anders worden beschreven.
2 SYNTAX Er deed zich een syntaxisfout voor in de batch.
3 CONFLICTING_RESULTS Het resultaat kon niet worden vastgesteld vanwege een conflict tussen twee mogelijke eerste uitspraken.
4 DYNAMIC_SQL Het resultaat kon niet worden bepaald vanwege dynamische SQL die mogelijk het eerste resultaat kon teruggeven.
5 CLR_PROCEDURE Het resultaat kon niet worden bepaald omdat een door CLR opgeslagen procedure mogelijk het eerste resultaat kon teruggeven.
6 CLR_TRIGGER Het resultaat kon niet worden bepaald omdat een CLR-trigger mogelijk het eerste resultaat kon teruggeven.
7 EXTENDED_PROCEDURE Het resultaat kon niet worden bepaald omdat een uitgebreide opgeslagen procedure mogelijk het eerste resultaat kon teruggeven.
8 UNDECLARED_PARAMETER Het resultaat kon niet worden bepaald omdat het datatype van een of meer kolommen in de resultaatset mogelijk afhangt van een niet-gedeclareerde parameter.
9 RECURSION Het resultaat kon niet worden bepaald omdat de batch een recursieve formulering bevat.
10 TEMPORARY_TABLE Het resultaat kon niet worden bepaald omdat de batch een tijdelijke tabel bevat en niet wordt ondersteund door sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT Het resultaat kon niet worden bepaald omdat de batch een statement bevat die niet wordt ondersteund door sp_describe_first_result_set (bijvoorbeeld FETCH, REVERT, enz.).
12 OBJECT_TYPE_NOT_SUPPORTED De @object_id pass-to-function wordt niet ondersteund (dat wil zeggen, het is geen stored procedure).
13 OBJECT_DOES_NOT_EXIST De @object_id doorgegeven aan de functie staat niet in de systeemcatalogus.

Permissions

Vereist toestemming om het @tsql-argument uit te voeren.

Voorbeelden

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2025 of AdventureWorksDW2025 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

Je kunt de voorbeelden in het sp_describe_first_result_set artikel aanpassen om te gebruiken sys.dm_exec_describe_first_result_set.

Eén. Retourinformatie over één enkele Transact-SQL verklaring

De volgende code geeft informatie over de resultaten van een Transact-SQL-statement.

USE @AdventureWorks2025;

SELECT *
FROM sys.dm_exec_describe_first_result_set (
    N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0
);

B. Retourinformatie over een procedure

Het volgende voorbeeld creëert een opgeslagen procedure genaamd pr_TestProc die twee resultaatsets teruggeeft. Vervolgens toont het voorbeeld aan dat sys.dm_exec_describe_first_result_set informatie teruggeeft over de eerste resultaatset in de procedure.

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. Geef metadata terug uit een batch die meerdere statements bevat

Het volgende voorbeeld evalueert een batch die twee Transact-SQL statements bevat. De resultaatverzameling beschrijft de eerste resultaatset die wordt teruggegeven.

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;