sys.dm_exec_describe_first_result_set (Transact-SQL)sys.dm_exec_describe_first_result_set (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2012)ouiAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2012)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Cette fonction de gestion dynamique accepte un Transact-SQLTransact-SQL instruction en tant que paramètre et décrit les métadonnées du premier jeu de résultats pour l’instruction.This dynamic management function takes a Transact-SQLTransact-SQL statement as a parameter and describes the metadata of the first result set for the statement.

Sys.dm_exec_describe_first_result_set a le même jeu de résultats en tant que définition de sys.dm_exec_describe_first_result_set_for_object ( Transact-SQL ) et est semblable à sp_describe_first_result_set ( Transact-SQL ) .sys.dm_exec_describe_first_result_set has the same result set definition as sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) and is similar to sp_describe_first_result_set (Transact-SQL).

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax


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

ArgumentsArguments

@tsql
Une ou plusieurs instructions Transact-SQLTransact-SQLOne or more Transact-SQLTransact-SQL statements. Transact-SQL_batch peut être nvarchar (n) ou nvarchar (max).Transact-SQL_batch may be nvarchar(n) or nvarchar(max).

@params
@paramsFournit une chaîne de déclaration pour les paramètres pour le Transact-SQLTransact-SQL lot, similaire à sp_executesql.@params provides a declaration string for parameters for the Transact-SQLTransact-SQL batch, similar to sp_executesql. Les paramètres peuvent être nvarchar (n) ou nvarchar (max).Parameters may be nvarchar(n) or nvarchar(max).

Est une chaîne qui contient les définitions de tous les paramètres qui ont été incorporés dans le Transact-SQLTransact-SQL _batch.Is one string that contains the definitions of all parameters that have been embedded in the Transact-SQLTransact-SQL_batch. Cette chaîne doit être une constante Unicode ou une variable Unicode.The string must be either a Unicode constant or a Unicode variable. Chaque définition de paramètre se compose d'un nom de paramètre et d'un type de données.Each parameter definition consists of a parameter name and a data type. nest un espace réservé qui indique les définitions de paramètres supplémentaires.n is a placeholder that indicates additional parameter definitions. Chaque paramètre spécifié dans stmt doit être défini dans @params.Every parameter specified in stmt must be defined in @params. Si le Transact-SQLTransact-SQL lot dans l’instruction ou l’instruction ne contient pas de paramètres, @params n’est pas obligatoire.If the Transact-SQLTransact-SQL statement or batch in the statement does not contain parameters, @params is not required. NULL est la valeur par défaut pour ce paramètre.NULL is the default value for this parameter.

@include_browse_information
Lorsque la valeur 1 est définie, chaque requête est analysée comme si elle comportait une option FOR BROWSE sur la requête.If set to 1, each query is analyzed as if it has a FOR BROWSE option on the query. Des colonnes clés supplémentaires et les informations de table source sont retournées.Additional key columns and source table information are returned.

Table retournéeTable Returned

Ces métadonnées communes sont retournées en tant que jeu de résultats.This common metadata is returned as a result set. Une ligne pour chaque colonne dans les métadonnées de résultats décrit le type et la possibilité de valeur NULL de la colonne dans le format indiqué dans le tableau suivant.One row for each column in the results metadata describes the type and nullability of the column in the format shown in the following table. S'il n'existe pas de première instruction pour chaque chemin d'accès de contrôle, un jeu de résultats avec des lignes nulles est retourné.If the first statement does not exist for every control path, a result set with zero rows is returned.

Nom de colonneColumn name Type de donnéesData type DescriptionDescription
is_hiddenis_hidden bitbit Spécifie que la colonne est une colonne supplémentaire ajoutée pour la navigation et à des fins d'informations qui ne s'affiche pas réellement dans le jeu de résultats.Specifies that the column is an extra column added for browsing and informational purposes that does not actually appear in the result set.
column_ordinalcolumn_ordinal intint Contient la position ordinale de la colonne dans le jeu de résultats.Contains the ordinal position of the column in the result set. Position de la première colonne sera spécifiée comme 1.Position of the first column will be specified as 1.
nomname sysnamesysname Contient le nom de la colonne si un nom peut être déterminé.Contains the name of the column if a name can be determined. Sinon, la valeur est NULL.If not, will contain NULL.
is_nullableis_nullable bitbit Contient les valeurs suivantes :Contains the following values:

Valeur 1 si la colonne autorise des valeurs NULL.Value 1 if column allows NULLs.

Valeur 0 si la colonne n'autorise pas de valeurs NULL.Value 0 if the column does not allow NULLs.

Valeur 1 s'il est impossible de déterminer que la colonne autorise des valeurs NULL.Value 1 if it cannot be determined that the column allows NULLs.
system_type_idsystem_type_id intint Contient le system_type_id du type de données de colonne comme spécifié dans sys.types.Contains the system_type_id of the column data type as specified in sys.types. Pour les types CLR, bien que la colonne system_type_name retourne NULL, cette colonne retournera la valeur 240.For CLR types, even though the system_type_name column will return NULL, this column will return the value 240.
system_type_namesystem_type_name nvarchar (256)nvarchar(256) Contient le nom et les arguments (tels que la longueur, la précision, l'échelle) spécifiés pour le type de données de la colonne.Contains the name and arguments (such as length, precision, scale), specified for the data type of the column.

Si le type de données est un type d’alias défini par l’utilisateur, le type de système sous-jacent est spécifié ici.If data type is a user-defined alias type, the underlying system type is specified here.

Si le type de données est un type clr défini par l'utilisateur, NULL est retourné dans cette colonne.If data type is a CLR user-defined type, NULL is returned in this column.
max_lengthmax_length smallintsmallint Longueur maximale (en octets) de la colonne.Maximum length (in bytes) of the column.

-1 = la colonne est de type de données varchar (max), nvarchar (max), varbinary (max), ou xml.-1 = Column data type is varchar(max), nvarchar(max), varbinary(max), or xml.

Pour texte des colonnes, le max_length valeur sera 16 ou à la valeur définie par sp_tableoption 'text in row'.For text columns, the max_length value will be 16 or the value set by sp_tableoption 'text in row'.
précisionprecision tinyinttinyint Précision de la colonne si elle est numérique.Precision of the column if numeric-based. Dans le cas contraire, retourne la valeur 0.Otherwise returns 0.
mise à l’échellescale tinyinttinyint Échelle de la colonne si elle est numérique.Scale of column if numeric-based. Dans le cas contraire, retourne la valeur 0.Otherwise returns 0.
collation_namecollation_name sysnamesysname Nom du classement de la colonne si elle est basée sur les caractères.Name of the collation of the column if character-based. Sinon, retourne NULL.Otherwise returns NULL.
user_type_iduser_type_id intint Pour les types d'alias et CLR, contient l'information user_type_id du type de données de la colonne comme spécifié dans sys.types.For CLR and alias types, contains the user_type_id of the data type of the column as specified in sys.types. Sinon, a la valeur NULL.Otherwise is NULL.
user_type_databaseuser_type_database sysnamesysname Pour les types d'alias et CLR, contient le nom de la base de données dans laquelle le type est défini.For CLR and alias types, contains the name of the database in which the type is defined. Sinon, a la valeur NULL.Otherwise is NULL.
user_type_schemauser_type_schema sysnamesysname Pour les types d'alias et CLR, contient le nom du schéma dans lequel le type est défini.For CLR and alias types, contains the name of the schema in which the type is defined. Sinon, a la valeur NULL.Otherwise is NULL.
user_type_nameuser_type_name sysnamesysname Pour les types d'alias et CLR, contient le nom du type.For CLR and alias types, contains the name of the type. Sinon, a la valeur NULL.Otherwise is NULL.
assembly_qualified_type_nameassembly_qualified_type_name nvarchar(4000)nvarchar(4000) Pour les types CLR, retourne le nom de l'assembly et de la classe définissant le type.For CLR types, returns the name of the assembly and class defining the type. Sinon, a la valeur NULL.Otherwise is NULL.
xml_collection_idxml_collection_id intint Contient l'information xml_collection_id du type de données de la colonne comme spécifié dans sys.columns.Contains the xml_collection_id of the data type of the column as specified in sys.columns. Cette colonne retourne NULL si le type retourné n'est pas associé à une collection de schémas XML.This column returns NULL if the type returned is not associated with an XML schema collection.
xml_collection_databasexml_collection_database sysnamesysname Contient la base de données dans laquelle la collection de schémas XML associée à ce type est définie.Contains the database in which the XML schema collection associated with this type is defined. Cette colonne retourne NULL si le type retourné n'est pas associé à une collection de schémas XML.This column returns NULL if the type returned is not associated with an XML schema collection.
xml_collection_schemaxml_collection_schema sysnamesysname Contient le schéma dans lequel la collection de schémas XML associée à ce type est définie.Contains the schema in which the XML schema collection associated with this type is defined. Cette colonne retourne NULL si le type retourné n'est pas associé à une collection de schémas XML.This column returns NULL if the type returned is not associated with an XML schema collection.
xml_collection_namexml_collection_name sysnamesysname Contient le nom de la collection de schémas XML associé à ce type.Contains the name of the XML schema collection associated with this type. Cette colonne retourne NULL si le type retourné n'est pas associé à une collection de schémas XML.This column returns NULL if the type returned is not associated with an XML schema collection.
is_xml_documentis_xml_document bitbit Retourne 1 si le type de données retourné est XML et que ce type est garanti être un document XML complet (nœud racine compris), par opposition à un fragment XML.Returns 1 if the returned data type is XML and that type is guaranteed to be a complete XML document (including a root node), as opposed to an XML fragment). Dans le cas contraire, retourne la valeur 0.Otherwise returns 0.
is_case_sensitiveis_case_sensitive bitbit Retourne 1 si la colonne est d'un type chaîne sensible à la casse.Returns 1 if the column is of a case-sensitive string type. Retourne 0 dans le cas contraire.Returns 0 if it is not.
is_fixed_length_clr_typeis_fixed_length_clr_type bitbit Retourne 1 si la colonne est d'un type CLR de longueur fixe.Returns 1 if the column is of a fixed-length CLR type. Retourne 0 dans le cas contraire.Returns 0 if it is not.
serveur_sourcesource_server sysnamesysname Nom du serveur d'origine (s'il provient d'un serveur distant).Name of the originating server (if it originates from a remote server). Le nom est donné tel qu’il apparaît dans sys.servers.The name is given as it appears in sys.servers. Retourne NULL si la colonne provient du serveur local, ou s'il est impossible de déterminer la provenance du serveur.Returns NULL if the column originates on the local server or if it cannot be determined which server it originates on. Est fourni uniquement si les informations de navigation sont demandées.Is only populated if browsing information is requested.
source_databasesource_database sysnamesysname Nom de la base de données d'origine retourné par la colonne dans ce résultat.Name of the originating database returned by the column in this result. Retourne NULL si la base de données ne peut pas être déterminée.Returns NULL if the database cannot be determined. Est fourni uniquement si les informations de navigation sont demandées.Is only populated if browsing information is requested.
source_schemasource_schema sysnamesysname Nom du schéma d'origine retourné par la colonne dans ce résultat.Name of the originating schema returned by the column in this result. Retourne NULL si le schéma ne peut pas être déterminé.Returns NULL if the schema cannot be determined. Est fourni uniquement si les informations de navigation sont demandées.Is only populated if browsing information is requested.
table_sourcesource_table sysnamesysname Nom de la table d'origine retourné par la colonne dans ce résultat.Name of the originating table returned by the column in this result. Retourne NULL si la table ne peut pas être déterminée.Returns NULL if the table cannot be determined. Est fourni uniquement si les informations de navigation sont demandées.Is only populated if browsing information is requested.
source_columnsource_column sysnamesysname Nom de la colonne d'origine retourné par la colonne de résultat.Name of the originating column returned by the result column. Retourne NULL si la colonne ne peut pas être déterminée.Returns NULL if the column cannot be determined. Est fourni uniquement si les informations de navigation sont demandées.Is only populated if browsing information is requested.
is_identity_columnis_identity_column bitbit Retourne 1 si la colonne est une colonne d'identité et 0 dans le cas contraire.Returns 1 if the column is an identity column and 0 if not. Retourne NULL s'il est impossible de déterminer que la colonne est une colonne d'identité.Returns NULL if it cannot be determined that the column is an identity column.
is_part_of_unique_keyis_part_of_unique_key bitbit Retourne 1 si la colonne fait partie d'un index unique (notamment les contraintes unique et primaire) et 0 dans le cas contraire.Returns 1 if the column is part of a unique index (including unique and primary constraints) and 0 if it is not. Retourne NULL s'il est impossible de déterminer que la colonne fait partie d'un index unique.Returns NULL if it cannot be determined that the column is part of a unique index. Est fourni uniquement si les informations de navigation sont demandées.Is only populated if browsing information is requested.
is_updateableis_updateable bitbit Retourne 1 si la colonne peut être mise à jour et 0 dans le cas contraire.Returns 1 if the column is updateable and 0 if not. Retourne NULL s'il est impossible de déterminer que la colonne peut être mise à jour.Returns NULL if it cannot be determined that the column is updateable.
is_computed_columnis_computed_column bitbit Retourne 1 si la colonne est une colonne calculée et 0 dans le cas contraire.Returns 1 if the column is a computed column and 0 if not. Retourne NULL s'il est impossible de déterminer que la colonne est une colonne calculée.Returns NULL if it cannot be determined if the column is a computed column.
is_sparse_column_setis_sparse_column_set bitbit Retourne 1 si la colonne est une colonne éparse et 0 dans le cas contraire.Returns 1 if the column is a sparse column and 0 if not. Retourne NULL s'il est impossible de déterminer que la colonne fait partie d'un jeu de colonnes éparses.Returns NULL if it cannot be determined that the column is a part of a sparse column set.
valeur ordinal_in_order_by_listordinal_in_order_by_list smallintsmallint position de cette colonne est dans la liste ORDER BY.ihe position of this column is in ORDER BY list. Retourne NULL si la colonne ne s'affiche pas dans la liste ORDER BY ou si la liste ORDER BY ne peut pas être déterminée de manière unique.Returns NULL if the column does not appear in the ORDER BY list, or if the ORDER BY list cannot be uniquely determined.
order_by_list_lengthorder_by_list_length smallintsmallint Longueur de la liste ORDER BY.The length of the ORDER BY list. Valeur NULL est retournée si aucune liste ORDER BY ou si la liste ORDER BY ne peut pas être déterminée de manière unique.NULL is returned if there is no ORDER BY list or if the ORDER BY list cannot be uniquely determined. Notez que cette valeur sera la même pour toutes les lignes retournées par sp_describe_first_result_set.Note that this value will be the same for all rows returned by sp_describe_first_result_set.
order_by_is_descendingorder_by_is_descending smallint NULLsmallint NULL Si la valeur ordinal_in_order_by_list n’est pas NULL, le order_by_is_descending colonne indique la direction de la clause ORDER BY pour cette colonne.If the ordinal_in_order_by_list is not NULL, the order_by_is_descending column reports the direction of the ORDER BY clause for this column. Sinon, elle indique NULL.Otherwise it reports NULL.
error_numbererror_number intint Contient le numéro d'erreur retourné par la fonction.Contains the error number returned by the function. Si aucune erreur ne s'est produite, la colonne contiendra NULL.If no error occurred, the column will contain NULL.
error_severityerror_severity intint Contient la gravité retournée par la fonction.Contains the severity returned by the function. Si aucune erreur ne s'est produite, la colonne contiendra NULL.If no error occurred, the column will contain NULL.
error_stateerror_state intint Contient le message d'état.Contains the state message. retourné par la fonction.returned by the function. Si aucune erreur ne s'est produite, la colonne contiendra NULL.If no error occurred, the column will contain NULL.
error_messageerror_message nvarchar(4096)nvarchar(4096) Contient le message retourné par la fonction.Contains the message returned by the function. Si aucune erreur ne s'est produite, la colonne contiendra NULL.If no error occurred, the column will contain NULL.
error_typeerror_type intint Contient un entier qui représente l'erreur retournée.Contains an integer representing the error being returned. Mappé à error_type_desc.Maps to error_type_desc. Consultez la liste sous les notes.See the list under remarks.
error_type_descerror_type_desc nvarchar (60)nvarchar(60) Contient une chaîne majuscule courte qui représente l'erreur retournée.Contains a short uppercase string representing the error being returned. Mappé à error_type.Maps to error_type. Consultez la liste sous les notes.See the list under remarks.

NotesRemarks

Cette fonction utilise le même algorithme que sp_describe_first_result_set.This function uses the same algorithm as sp_describe_first_result_set. Pour plus d’informations, consultez sp_describe_first_result_set ( Transact-SQL ) .For more information, see sp_describe_first_result_set (Transact-SQL).

Le tableau suivant répertorie les types d'erreur et leur description.The following table lists the error types and their descriptions

error_typeerror_type error_typeerror_type DescriptionDescription
11 MISCMISC Toutes les erreurs qui ne font pas l'objet d'une description.All errors that are not otherwise described.
22 SYNTAXSYNTAX Une erreur de syntaxe s'est produite dans le lot.A syntax error occurred in the batch.
33 CONFLICTING_RESULTSCONFLICTING_RESULTS Le résultat n'a pas pu être déterminé en raison d'un conflit entre deux premières instructions possibles.The result could not be determined because of a conflict between two possible first statements.
44 DYNAMIC_SQLDYNAMIC_SQL Le résultat n'a pas pu être déterminé en raison du SQL dynamique qui pourrait éventuellement retourner le premier résultat.The result could not be determined because of dynamic SQL that could potentially return the first result.
55 CLR_PROCEDURECLR_PROCEDURE Le résultat n'a pas pu être déterminé parce qu'une procédure stockée clr pourrait éventuellement retourner le premier résultat.The result could not be determined because a CLR stored procedure could potentially return the first result.
66 CLR_TRIGGERCLR_TRIGGER Le résultat n'a pas pu être déterminé parce qu'un déclencheur CLR pourrait éventuellement retourner le premier résultat.The result could not be determined because a CLR trigger could potentially return the first result.
77 EXTENDED_PROCEDUREEXTENDED_PROCEDURE Le résultat n'a pas pu être déterminé parce qu'une procédure stockée étendue pourrait éventuellement retourner le premier résultat.The result could not be determined because an extended stored procedure could potentially return the first result.
88 UNDECLARED_PARAMETERUNDECLARED_PARAMETER Le résultat n'a pas pu être déterminé car le type de données d'une ou plusieurs des colonnes du jeu de résultats dépend potentiellement d'un paramètre non déclaré.The result could not be determined because the data type of one or more of the result set’s columns potentially depends on an undeclared parameter.
99 RECURSIONRECURSION Le résultat n'a pas pu être déterminé car le lot contient une instruction récursive.The result could not be determined because the batch contains a recursive statement.
1010 TEMPORARY_TABLETEMPORARY_TABLE Le résultat n’a pas pu être déterminé car le lot contient une table temporaire n’est pas pris en charge par sp_describe_first_result_set .The result could not be determined because the batch contains a temporary table and is not supported by sp_describe_first_result_set .
1111 UNSUPPORTED_STATEMENTUNSUPPORTED_STATEMENT Le résultat n’a pas pu être déterminé car le lot contient une instruction qui n’est pas pris en charge par sp_describe_first_result_set (par exemple, FETCH, REVERT etc.).The result could not be determined because the batch contains a statement that is not supported by sp_describe_first_result_set (e.g., FETCH, REVERT etc.).
1212 OBJECT_TYPE_NOT_SUPPORTEDOBJECT_TYPE_NOT_SUPPORTED Le @object_id transmis à la fonction est pas pris en charge (autrement dit, pas une procédure stockée)The @object_id passed to the function is not supported (i.e. not a stored procedure)
1313 OBJECT_DOES_NOT_EXISTOBJECT_DOES_NOT_EXIST Le @object_id transmis à la fonction est introuvable dans le catalogue système.The @object_id passed to the function was not found in the system catalog.

PermissionsPermissions

Requiert l’autorisation d’exécuter le @tsql argument.Requires permission to execute the @tsql argument.

ExemplesExamples

Pour obtenir des exemples supplémentaires dans la rubrique sp_describe_first_result_set ( Transact-SQL ) peuvent être adaptés pour utiliser sys.dm_exec_describe_first_result_set.Additional examples in the topic sp_describe_first_result_set (Transact-SQL) can be adapted to use sys.dm_exec_describe_first_result_set.

A.A. Retour d'informations sur une instruction Transact-SQL uniqueReturning information about a single Transact-SQL statement

Le code suivant retourne des informations sur les résultats d'une instruction Transact-SQLTransact-SQL.The following code returns information about the results of a Transact-SQLTransact-SQL statement.

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

B.B. Retour d'informations sur une procédureReturning information about a procedure

L’exemple suivant crée une procédure stockée nommée pr_TestProc qui retourne deux jeux de résultats.The following example creates a stored procedure named pr_TestProc that returns two result sets. Ensuite, l’exemple montre que sys.dm_exec_describe_first_result_set retourne des informations sur le premier jeu de résultats dans la procédure.Then the example demonstrates that sys.dm_exec_describe_first_result_set returns information about the first result set in the procedure.

USE AdventureWorks2012;  
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.C. Retour de métadonnées à partir d'un lot qui contient plusieurs instructionsReturning metadata from a batch that contains multiple statements

L'exemple suivant évalue un lot qui contient deux instructions Transact-SQLTransact-SQL.The following example evaluates a batch that contains two Transact-SQLTransact-SQL statements. Le jeu de résultats décrit le premier jeu de résultats retourné.The result set describes the first result set returned.

USE AdventureWorks2012;  
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  

Voir aussiSee Also

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