Delen 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 beschrijft de metadata van de eerste resultaatset voor de stelling.

sys.dm_exec_describe_first_result_set heeft dezelfde definitie van resultaatsets als sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) ) en lijkt op sp_describe_first_result_set (Transact-SQL).

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. Transact-SQL_batch kan nvarchar(n) of nvarchar(max) zijn.

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

Is één string die de definities bevat van alle parameters die in de Transact-SQL_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 staat. Extra sleutelkolommen en brontabelinformatie worden teruggegeven.

Tabel geretourneerd

Deze gemeenschappelijke metadata wordt teruggegeven als een resultaatset. Eén rij per kolom in de resultaatmetadata beschrijft het type en de neutraliteit van de kolom in het formaat dat in de volgende tabel wordt getoond. Als de eerste instructie niet bestaat voor elk controlepad, wordt een resultaatset met nul rijen teruggegeven.

Kolomnaam Gegevenstype Description
is_hidden bit Specificeert dat de kolom een extra kolom is die is toegevoegd voor browse- en informatiedoeleinden en 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 bevat het NULL.
is_nullable bit Bevat de volgende waarden:

Waarde 1 als de kolom NULLs toestaat.

Waarde 0 als de kolom geen NULLs toestaat.

Waarde 1 als niet kan worden bepaald dat de kolom NULLs toestaat.
system_type_id int Bevat de system_type_id van het kolomdatatype zoals gespecificeerd in sys.types. Voor CLR-typen, hoewel de kolom system_type_name NULL teruggeeft, geeft deze kolom de waarde 240 terug.
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 CLR-door de gebruiker gedefinieerd type is, wordt NULL 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 de max_length waarde 16 of de waarde die wordt ingesteld door sp_tableoption 'tekst in rij'.
precisie tinyint Precisie van de kolom als het numeriek is. Anders geeft 0 terug.
scale tinyint Schaal van de kolom als het numeriek is. Anders geeft 0 terug.
collation_name sysname Naam van de collatie van de kolom als het op karakter gebaseerd is. Anders levert hij NULL terug.
user_type_id int Voor CLR- en aliastypes bevat het user_type_id van het datatype van de kolom zoals gespecificeerd in sys.types. Anders is het NULL.
user_type_database sysname Voor CLR- en aliastypes bevat het de naam van de database waarin het type is gedefinieerd. Anders is het NULL.
user_type_schema sysname Voor CLR- en aliastypes bevat het de naam van het schema waarin het type is gedefinieerd. Anders is het NULL.
user_type_name sysname Voor CLR- en aliastypes bevat de naam van het type. Anders is het 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 het NULL.
xml_collection_id int Bevat de xml_collection_id van het datatype van de kolom zoals gespecificeerd in sys.columns. Deze kolom geeft NULL terug 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 NULL terug 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 NULL terug 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 NULL terug als het geretourneerde type niet gekoppeld is aan een XML-schemacollectie.
is_xml_document bit Geeft 1 terug als het geretourneerde datatype XML is en dat type gegarandeerd een volledig XML-document is (inclusief een root-node), in tegenstelling tot een XML-fragment). Anders geeft 0 terug.
is_case_sensitive bit Geeft 1 terug als de kolom van een hoofdlettergevoelig stringtype is. Geeft 0 terug als dat niet zo is.
is_fixed_length_clr_type bit Geeft 1 terug als de kolom van een CLR-type met vaste lengte is. Geeft 0 terug 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 die verschijnt in sys.servers. Geeft NULL terug als de kolom afkomstig is van de lokale server of als niet kan worden bepaald op welke server hij 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. Geeft NULL terug 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. Geeft NULL terug 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. Geeft NULL terug als de tabel niet bepaald kan worden. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
source_column sysname Naam van de oorspronkelijke kolom die door de resultaatkolom wordt teruggegeven. Geeft NULL terug als de kolom niet bepaald kan worden. Wordt alleen gevuld als browse-informatie wordt opgevraagd.
is_identity_column bit Geeft 1 terug als de kolom een identiteitskolom is en 0 als dat niet zo is. Geeft NULL terug als niet kan worden vastgesteld dat de kolom een identiteitskolom is.
is_part_of_unique_key bit Geeft 1 terug als de kolom deel uitmaakt van een unieke index (inclusief unieke en primaire beperkingen) en 0 als dat niet zo is. Geeft NULL als 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 1 terug als de kolom bijwerkbaar is en 0 als dat niet zo is. Geeft NULL terug als niet kan worden bepaald dat de kolom bijwerkbaar is.
is_computed_column bit Geeft 1 terug als de kolom een berekende kolom is en 0 als dat niet zo is. Geeft NULL terug als niet kan worden bepaald of de kolom een berekende kolom is.
is_sparse_column_set bit Geeft 1 terug als de kolom een spaarzame kolom is en 0 als dat niet zo is. Geeft NULL terug als niet kan worden vastgesteld dat de kolom deel uitmaakt van een sobere kolomverzameling.
ordinal_in_order_by_list smallint De positie van deze kolom staat in de VOLGORDE OP-lijst. Geeft NULL terug als de kolom niet voorkomt in de ORDER BY-lijst, 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. Let op dat deze waarde hetzelfde zal zijn voor alle rijen die door sp_describe_first_result_set worden teruggegeven.
order_by_is_descending smallint NULL Als de ordinal_in_order_by_list niet NULL is, rapporteert de kolom order_by_is_descending de richting van de ORDER BY-clausule voor deze kolom. Anders wordt er NULL gemeld.
error_number int Bevat het foutnummer dat door de functie wordt teruggegeven. Als er geen fout is opgetreden, bevat de kolom NULL.
error_severity int Bevat de ernst die door de functie wordt teruggegeven. Als er geen fout is opgetreden, bevat de kolom NULL.
error_state int Bevat het statusbericht. teruggekeerd door de ceremonie. Als er geen fout is opgetreden, bevat de kolom NULL.
error_message Nvarchar(4096) Bevat het bericht dat door de functie wordt teruggegeven. Als er geen fout is opgetreden, bevat de kolom NULL.
error_type int Bevat een geheel getal dat de teruggegeven fout vertegenwoordigt. Kaarten naar error_type_desc. Zie de lijst onder opmerkingen.
error_type_desc nvarchar(60) Bevat een korte hoofdletterreeks die de teruggegeven fout weergeeft. Kaarten naar 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 (Transact-SQL).

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

error_type error_type Description
1 MISC Alle fouten die niet anders worden beschreven.
2 SYNTAXIS Er deed zich een syntaxisfout voor in de batch.
3 CONFLICTING_RESULTS Het resultaat kon niet worden bepaald 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 opgeslagen procedure in CLR 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 RECURSIE Het resultaat kon niet worden bepaald omdat de batch een recursieve stelling 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 instructie bevat die niet door sp_describe_first_result_set wordt ondersteund (bijvoorbeeld FETCH, REVERT, enz.).
12 OBJECT_TYPE_NOT_SUPPORTED De @object_id die aan de functie wordt doorgegeven, wordt niet ondersteund (dus geen opgeslagen procedure)
13 OBJECT_DOES_NOT_EXIST De @object_id die aan de functie werd doorgegeven, werd niet gevonden in de systeemcatalogus.

Permissions

Vereist toestemming om het @tsql argument uit te voeren.

Voorbeelden

Extra voorbeelden in het onderwerp sp_describe_first_result_set (Transact-SQL) kunnen worden aangepast om sys.dm_exec_describe_first_result_set te gebruiken.

Eén. Informatie teruggeven over één enkele Transact-SQL uitspraak

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

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. Informatie teruggeven 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 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. Metadata teruggeven van 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 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  

Zie ook

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