Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Deze dynamische beheerfunctie neemt een @object_id als parameter en beschrijft de eerste resultaatmetadata voor de module met die ID. De @object_id gespecificeerde kan de ID zijn van een Transact-SQL stored procedure of een Transact-SQL trigger. Als het de ID is van een ander object (zoals een weergave, tabel, functie of CLR-procedure), wordt een fout gespecificeerd in de foutkolommen van het resultaat.
sys.dm_exec_describe_first_result_set_for_object heeft dezelfde definitie van de resultaatset als sys.dm_exec_describe_first_result_set (Transact-SQL) en lijkt op sp_describe_first_result_set (Transact-SQL).
Transact-SQL syntaxis-conventies
Syntaxis
sys.dm_exec_describe_first_result_set_for_object
( @object_id , @include_browse_information )
Arguments
@object_id
Het gaat om @object_id een Transact-SQL opgeslagen procedure of een Transact-SQL trigger.
@object_id is type int.
@include_browse_information
@include_browse_information is typebit. Als deze op 1 staat, wordt elke query geanalyseerd alsof er een FOR BROWSE-optie op de query staat. Geeft extra sleutelkolommen en brontabelinformatie terug.
Tabel geretourneerd
Deze gemeenschappelijke metadata wordt teruggegeven als een resultaatset met één rij per kolom in de resultaatmetadata. Elke rij beschrijft het type en de neutraliteit van de kolom in het formaat dat in de volgende sectie wordt beschreven. Als de eerste instructie niet bestaat voor elk controlepad, wordt een resultaatset met nul rijen teruggegeven.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| is_hidden | bit | Geeft aan of de kolom een extra kolom is die is toegevoegd voor browse-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. Anders is het NULL. |
| is_nullable | bit | Bevat de waarde 1 als de kolom NULLs toestaat, 0 als de kolom geen NULLs toestaat, en 1 als niet kan worden vastgesteld dat de kolom NULLs toestaat. |
| system_type_id | int | Bevat de system_type_id van het datatype van de kolom 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 van het datatype. Bevat argumenten (zoals lengte, precisie, schaal) die zijn gespecificeerd voor het datatype van de kolom. Als het datatype een door de gebruiker gedefinieerde alias is, wordt het onderliggende systeemtype hier gespecificeerd. Als het 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 type dat wordt teruggegeven niet is gekoppeld 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 type dat wordt teruggegeven niet is gekoppeld 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 type dat wordt teruggegeven niet is gekoppeld 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 type dat wordt teruggegeven niet is gekoppeld 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 een hoofdlettergevoelig stringtype heeft en 0 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 en 0 als dat niet zo is. |
| source_server | sysname | Naam van de oorspronkelijke server die door de kolom in dit resultaat wordt teruggegeven (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 kolom in dit resultaat 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 beperking) en 0 als dat niet zo is. Geeft NULL als niet kan worden vastgesteld dat de kolom deel uitmaakt van een unieke index. Alleen gevuld als er 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 vastgesteld dat 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 in de ORDER BY-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 | Lengte van de ORDER BY-lijst. Geeft NULL terug 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. Bevat NULL als er geen fout in de kolom is opgetreden. |
| error_severity | int | Bevat de ernst die door de functie wordt teruggegeven. Bevat NULL als er geen fout in de kolom is opgetreden. |
| error_state | int | Bevat het statusbericht dat door de functie wordt teruggegeven. Als er geen fout is opgetreden. de kolom zal NULL bevatten. |
| 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_ID_NOT_SUPPORTED | De @object_id pass-to-function wordt niet ondersteund (dus geen opgeslagen procedure) |
| 13 | OBJECT_ID_DOES_NOT_EXIST | De @object_id doorgegeven aan de functie werd niet gevonden in de systeemcatalogus. |
Permissions
Vereist toestemming om het argument uit te @tsql voeren.
Voorbeelden
Eén. Metadata teruggeven met en zonder browse-informatie
Het volgende voorbeeld creëert een opgeslagen procedure genaamd TestProc2 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, met en zonder de browse-informatie.
CREATE PROC TestProc2
AS
SELECT object_id, name FROM sys.objects ;
SELECT name, schema_id, create_date FROM sys.objects ;
GO
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 0) ;
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 1) ;
GO
B. Het combineren van de sys.dm_exec_describe_first_result_set_for_object functie en een tabel of weergave
Het volgende voorbeeld gebruikt zowel de sys.procedures systeemcatalogusweergave als de sys.dm_exec_describe_first_result_set_for_object functie om metadata weer te geven voor de resultatensets van alle opgeslagen procedures in de AdventureWorks2025 database.
USE AdventureWorks2022;
GO
SELECT p.name, r.*
FROM sys.procedures AS p
CROSS APPLY sys.dm_exec_describe_first_result_set_for_object(p.object_id, 0) AS r;
GO
Zie ook
sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set (Transact-SQL)