Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Cette fonction de gestion dynamique prend une instruction Transact-SQL comme paramètre et retourne les métadonnées du premier ensemble de résultats de l’énoncé.
sys.dm_exec_describe_first_result_set renvoie la même définition de l’ensemble de résultats que sys.dm_exec_describe_first_result_set_for_object et est similaire à sp_describe_first_result_set.
Conventions de la syntaxe Transact-SQL
Syntaxe
sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)
Arguments
@tsql
Une ou plusieurs instructions Transact-SQL. Le @tsql lot peut être nvarchar(n) ou nvarchar(max).
@params
@params fournit une chaîne de déclaration pour les paramètres du Transact-SQL lot, similaire à sp_executesql. Les paramètres peuvent être nvarchar(n) ou nvarchar(max).
Une seule chaîne contenant les définitions de tous les paramètres intégrés dans le @tsql lot. Cette chaîne doit être une constante Unicode ou une variable Unicode. Chaque définition de paramètre se compose d'un nom de paramètre et d'un type de données.
n correspond à un espace réservé pour d’autres définitions de paramètres. Chaque paramètre spécifié dans stmt doit être défini en @params. Si l’instruction Transact-SQL ou le lot de l’instruction ne contient pas de paramètres, @params n’est pas obligatoire.
NULL est la valeur par défaut de ce paramètre.
@include_browse_information
Si elle est réglée à 1, chaque requête est analysée comme si elle avait une FOR BROWSE option sur la requête. Le résultat comprend des colonnes clés supplémentaires et des informations sur la table des sources.
Table retournée
La fonction renvoie ces métadonnées courantes sous forme d’ensemble de résultats. Chaque ligne correspond à une colonne dans les métadonnées des résultats et décrit le type et la nullité de la colonne dans le format montré dans le tableau suivant. Si la première instruction n’existe pas pour chaque chemin de contrôle, la fonction retourne un ensemble de résultats avec zéro ligne.
| Nom de la colonne | Type de données | Description |
|---|---|---|
is_hidden |
bit | Précise que la colonne est une colonne supplémentaire, ajoutée à des fins de navigation et d’information, qui n’apparaît pas réellement dans l’ensemble des résultats. |
column_ordinal |
int | Contient la position ordinale de la colonne dans le jeu de résultats. La position de la première colonne est spécifiée comme 1. |
name |
sysname | Contient le nom de la colonne si un nom peut être déterminé. Sinon, c’est NULL. |
is_nullable |
bit | Contient les valeurs suivantes : Retourne 1 si la colonne permet NULL des valeurs.Retour 0 si la colonne n’autorise NULL pas les valeurs.Retour 1 si on ne peut pas déterminer que la colonne permet NULL des valeurs. |
system_type_id |
int | Contient le system_type_id de la colonne type de données spécifié dans sys.types. Pour les types CLR, même si la system_type_name colonne retourne NULL, cette colonne retourne 240. |
system_type_name |
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. 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. Si le type de données est un type CLR défini par l’utilisateur, NULL est retourné dans cette colonne. |
max_length |
smallint | Longueur maximale (en octets) de la colonne.-1 = Le type de données de colonne est varchar(max), nvarchar(max), varbinary(max)ou xml.Pour les colonnes de texte , la max_length valeur est 16, ou la valeur définie par sp_tableoption 'text in row'. |
precision |
tinyint | Précision de la colonne si elle est numérique. Sinon, retourne 0. |
scale |
tinyint | Échelle de la colonne si elle est numérique. Sinon, retourne 0. |
collation_name |
sysname | Nom du classement de la colonne si elle est basée sur les caractères. Sinon, retourne NULL. |
user_type_id |
int | Pour les types CLR et alias, contient le user_type_id type de données de la colonne tel que spécifié dans sys.types. Sinon, c’est NULL. |
user_type_database |
sysname | Pour les types d'alias et CLR, contient le nom de la base de données dans laquelle le type est défini. Sinon, c’est NULL. |
user_type_schema |
sysname | Pour les types d'alias et CLR, contient le nom du schéma dans lequel le type est défini. Sinon, c’est NULL. |
user_type_name |
sysname | Pour les types d'alias et CLR, contient le nom du type. Sinon, c’est NULL. |
assembly_qualified_type_name |
nvarchar(4000) | Pour les types CLR, retourne le nom de l'assembly et de la classe définissant le type. Sinon, c’est NULL. |
xml_collection_id |
int | Contient le xml_collection_id type de données de la colonne comme spécifié dans sys.columns. Cette colonne retourne NULL si le type retourné n’est pas associé à une collection de schémas XML. |
xml_collection_database |
sysname | Contient la base de données dans laquelle la collection de schémas XML associée à ce type est définie. Cette colonne retourne NULL si le type retourné n’est pas associé à une collection de schémas XML. |
xml_collection_schema |
sysname | Contient le schéma dans lequel la collection de schémas XML associée à ce type est définie. Cette colonne retourne NULL si le type retourné n’est pas associé à une collection de schémas XML. |
xml_collection_name |
sysname | Contient le nom de la collection de schémas XML associé à ce type. Cette colonne retourne NULL si le type retourné n’est pas associé à une collection de schémas XML. |
is_xml_document |
bit | Retour 1 si le type de données retourné est XML et que ce type est garanti d’être un document XML complet (incluant un nœud racine, et non un fragment XML). Sinon, retourne 0. |
is_case_sensitive |
bit | Return 1 si la colonne est de type chaîne sensible à la casse. Retour 0 si ce n’est pas le cas. |
is_fixed_length_clr_type |
bit | Rendement 1 si la colonne est de type CLR à longueur fixe. Retour 0 si ce n’est pas le cas. |
source_server |
sysname | Nom du serveur d'origine (s'il provient d'un serveur distant). Le nom est donné tel qu’il apparaît dans sys.servers. Retourne NULL si la colonne provient du serveur local ou si elle ne peut pas être déterminée sur le serveur sur lequel elle provient. Fourni uniquement si les informations de navigation sont demandées. |
source_database |
sysname | Nom de la base de données d'origine retourné par la colonne dans ce résultat. Retourne NULL si la base de données ne peut pas être déterminée. Fourni uniquement si les informations de navigation sont demandées. |
source_schema |
sysname | Nom du schéma d'origine retourné par la colonne dans ce résultat. Retourne NULL si le schéma ne peut pas être déterminé. Fourni uniquement si les informations de navigation sont demandées. |
source_table |
sysname | Nom de la table d'origine retourné par la colonne dans ce résultat. Retourne NULL si la table ne peut pas être déterminée. Fourni uniquement si les informations de navigation sont demandées. |
source_column |
sysname | Nom de la colonne d'origine retourné par la colonne de résultat. Retourne NULL si la colonne ne peut pas être déterminée. Fourni uniquement si les informations de navigation sont demandées. |
is_identity_column |
bit | Retourne 1 si la colonne est une colonne identité, et 0 sinon. Retourne NULL s’il ne peut pas être déterminé que la colonne est une colonne d’identité. |
is_part_of_unique_key |
bit | Rend 1 si la colonne fait partie d’un indice unique (y compris les contraintes uniques et primaires) et 0 si ce n’est pas le cas. Retourne NULL s’il ne peut pas être déterminé que la colonne fait partie d’un index unique. Fourni uniquement si les informations de navigation sont demandées. |
is_updateable |
bit | Retourne 1 si la colonne est actualisable et 0 si ce n’est pas le cas. Retourne NULL s’il ne peut pas être déterminé que la colonne peut être mise à jour. |
is_computed_column |
bit | Rend 1 si la colonne est une colonne calculée et 0 si ce n’est pas le cas. Retour NULL si on ne peut pas déterminer si la colonne est une colonne calculée. |
is_sparse_column_set |
bit | Retourne 1 si la colonne est clairsemée et 0 sinon. Retour NULL si on ne peut pas déterminer que la colonne fait partie d’un ensemble de colonnes clairsemées. |
ordinal_in_order_by_list |
smallint | La position de cette colonne est dans ORDER BY la liste. Retour NULL si la colonne n’apparaît pas dans la ORDER BY liste, ou si la ORDER BY liste ne peut pas être déterminée de manière unique. |
order_by_list_length |
smallint | La longueur de la ORDER BY liste.
NULL est retourné s’il n’y a pas ORDER BY de liste ou si la ORDER BY liste ne peut pas être déterminée de manière unique. Cette valeur est la même pour toutes les lignes retournées par sp_describe_first_result_set. |
order_by_is_descending |
smallint | Si ce ordinal_in_order_by_list n’est pas NULLle cas, la order_by_is_descending colonne signale la direction de la ORDER BY clause pour cette colonne. Sinon, il signale NULL. |
error_number |
int | Contient le numéro d'erreur retourné par la fonction. Si aucune erreur n’est survenue, la colonne contient NULL. |
error_severity |
int | Contient la gravité retournée par la fonction. Si aucune erreur n’est survenue, la colonne contient NULL. |
error_state |
int | Contient le message d’état retourné par la fonction. Si aucune erreur n’est survenue, la colonne contient NULL. |
error_message |
nvarchar(4096) | Contient le message retourné par la fonction. Si aucune erreur n’est survenue, la colonne contient NULL. |
error_type |
int | Contient un entier qui représente l'erreur retournée. Mappe à error_type_desc. Consultez la liste sous les notes. |
error_type_desc |
nvarchar(60) | Contient une chaîne majuscule courte qui représente l'erreur retournée. Mappe à error_type. Consultez la liste sous les notes. |
Notes
Cette fonction utilise le même algorithme que sp_describe_first_result_set. Pour plus d’informations, voir sp_describe_first_result_set.
Le tableau suivant présente les types d’erreurs et leurs descriptions.
error_type |
error_type |
Description |
|---|---|---|
1 |
MISC |
Toutes des erreurs qui ne sont pas décrites autrement. |
2 |
SYNTAX |
Une erreur de syntaxe s'est produite dans le lot. |
3 |
CONFLICTING_RESULTS |
Le résultat n’a pas pu être déterminé en raison d’un conflit entre deux énoncés possibles de première formulation. |
4 |
DYNAMIC_SQL |
Le résultat n’a pas pu être déterminé à cause du SQL dynamique qui pourrait potentiellement retourner le premier résultat. |
5 |
CLR_PROCEDURE |
Le résultat n’a pas pu être déterminé car une procédure stockée CLR pourrait potentiellement retourner le premier résultat. |
6 |
CLR_TRIGGER |
Le résultat n’a pas pu être déterminé car un déclencheur CLR pourrait potentiellement renvoyer le premier résultat. |
7 |
EXTENDED_PROCEDURE |
Le résultat n’a pas pu être déterminé car une procédure stockée prolongée pourrait potentiellement restituer le premier résultat. |
8 |
UNDECLARED_PARAMETER |
Le résultat n’a pas pu être déterminé car le type de données d’une ou plusieurs colonnes de l’ensemble de résultats dépend potentiellement d’un paramètre non déclaré. |
9 |
RECURSION |
Le résultat n’a pas pu être déterminé car le lot contient une instruction récursive. |
10 |
TEMPORARY_TABLE |
Le résultat n’a pas pu être déterminé car le lot contient une table temporaire et n’est pas supporté par sp_describe_first_result_set . |
11 |
UNSUPPORTED_STATEMENT |
Le résultat n’a pas pu être déterminé car le lot contient une instruction qui n’est pas prise en charge par sp_describe_first_result_set (par exemple, FETCH, REVERT, etc.). |
12 |
OBJECT_TYPE_NOT_SUPPORTED |
Le @object_id « passé à la fonction » n’est pas pris en charge (c’est-à-dire que ce n’est pas une procédure stockée). |
13 |
OBJECT_DOES_NOT_EXIST |
Le @object_id « passé à la fonction » n’est pas trouvé dans le catalogue système. |
autorisations
Nécessite l’autorisation d’exécuter l’argument @tsql.
Exemples
Les exemples de code de cet article utilisent les bases de données d'exemple AdventureWorks2025 ou AdventureWorksDW2025, que vous pouvez télécharger à partir de la page d'accueil Microsoft SQL Server Samples and Community Projects.
Vous pouvez adapter les exemples de l’article sp_describe_first_result_set pour utiliser sys.dm_exec_describe_first_result_set.
R : Informations de retour sur un relevé de Transact-SQL unique
Le code suivant retourne des informations sur les résultats d’une instruction Transact-SQL.
USE @AdventureWorks2025;
SELECT *
FROM sys.dm_exec_describe_first_result_set (
N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0
);
B. Informations de retour sur une procédure
L’exemple suivant crée une procédure stockée nommée pr_TestProc qui retourne deux ensembles de résultats. Ensuite, l’exemple démontre que cela sys.dm_exec_describe_first_result_set renvoie des informations sur le premier ensemble de résultats de la procédure.
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. Retourner les métadonnées d’un lot contenant plusieurs instructions
L’exemple suivant évalue un lot qui contient deux instructions Transact-SQL. Le jeu de résultats décrit le premier jeu de résultats retourné.
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;