Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di Azure SQL
Database SQL su Microsoft Fabric
Questa funzione di gestione dinamica prende una Transact-SQL istruzione come parametro e restituisce i metadati per il primo insieme di risultati dell'istruzione.
sys.dm_exec_describe_first_result_set restituisce la stessa definizione dell'insieme di risultati di sys.dm_exec_describe_first_result_set_for_object ed è simile a sp_describe_first_result_set.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)
Arguments
@tsql
Una o più istruzioni Transact-SQL. Il @tsql lotto può essere nvarchar(n) o nvarchar(max).
@params
@params fornisce una stringa di dichiarazione per i parametri del batch Transact-SQL, simile a sp_executesql. I parametri possono essere nvarchar(n) o nvarchar(max).
Una singola stringa che contiene le definizioni di tutti i parametri incorporati nel @tsql batch. La stringa deve essere una costante o una variabile Unicode. Ogni definizione di parametro è costituita da un nome del parametro e da un tipo di dati.
n è un segnaposto che indica definizioni di parametro aggiuntive. Ogni parametro specificato in stmt deve essere definito in @params. Se l'istruzione Transact-SQL o il batch nell'istruzione non contiene parametri, @params non è necessario.
NULL è il valore predefinito per questo parametro.
@include_browse_information
Se impostata su 1, ogni query viene analizzata come se avesse un'opzione FOR BROWSE sulla query. Il risultato include colonne chiave aggiuntive e informazioni sulle tabelle sorgente.
Tabella restituita
La funzione restituisce questi metadati comuni come insieme di risultati. Ogni riga corrisponde a una colonna nei metadati dei risultati e descrive il tipo e la nullabilità della colonna nel formato mostrato nella tabella seguente. Se la prima istruzione non esiste per ogni percorso di controllo, la funzione restituisce un insieme di risultati con zero righe.
| Nome della colonna | Tipo di dati | Description |
|---|---|---|
is_hidden |
bit | Specifica che la colonna è una colonna extra, aggiunta per scopi di navigazione e informativi, che in realtà non appare nel set di risultati. |
column_ordinal |
int | Contiene la posizione ordinale della colonna nel set di risultati. La posizione della prima colonna è specificata come 1. |
name |
sysname | Contiene il nome della colonna se è possibile determinare un nome. Se no, è NULL. |
is_nullable |
bit | Contiene i valori seguenti: Restituisce 1 se la colonna permette NULL i valori.Restituisce 0 se la colonna non permette NULL valori.Restituisce 1 se non si può determinare che la colonna consente NULL valori. |
system_type_id |
int | Contiene il system_type_id del tipo di dato colonna come specificato in sys.types. Per i tipi CLR, anche se la system_type_name colonna restituisce NULL, questa colonna restituisce 240. |
system_type_name |
nvarchar(256) | Contiene il nome e gli argomenti, ad esempio lunghezza, precisione e scala, specificati per il tipo di dati della colonna. Se il tipo di dati è un tipo di alias definito dall'utente, il tipo di sistema sottostante viene specificato qui. Se il tipo di dato è un tipo CLR definito dall'utente, NULL viene restituito in questa colonna. |
max_length |
smallint | Lunghezza massima in byte della colonna.-1 = Il tipo di dati della colonna è varchar(max), nvarchar(max), varbinary(max)o xml.Per le colonne di testo , il max_length valore è 16, oppure il valore imposto da sp_tableoption 'text in row'. |
precision |
tinyint | Precisione della colonna se basata su valori numerici. In caso contrario restituisce 0. |
scale |
tinyint | Scala della colonna se basata su valori numerici. In caso contrario restituisce 0. |
collation_name |
sysname | Nome delle regole di confronto della colonna se basata su caratteri. In caso contrario restituisce NULL. |
user_type_id |
int | Per i tipi CLR e alias, contiene l'oggetto user_type_id del tipo di dati della colonna come specificato in sys.types. In caso contrario, è NULL. |
user_type_database |
sysname | Per i tipi di alias e CLR, contiene il nome del database in cui è definito il tipo. In caso contrario, è NULL. |
user_type_schema |
sysname | Per i tipi di alias e CLR, contiene il nome dello schema in cui è definito il tipo. In caso contrario, è NULL. |
user_type_name |
sysname | Per i tipi di alias e CLR, contiene il nome del tipo. In caso contrario, è NULL. |
assembly_qualified_type_name |
nvarchar(4000) | Per i tipi CLR, restituisce il nome dell'assembly e la classe che definisce il tipo. In caso contrario, è NULL. |
xml_collection_id |
int | Contiene l'oggetto xml_collection_id del tipo di dati della colonna come specificato in sys.columns. Questa colonna restituisce NULL se il tipo restituito non è associato a una raccolta di XML Schema. |
xml_collection_database |
sysname | Contiene il database in cui viene definita la raccolta XML Schema associata a questo tipo. Questa colonna restituisce NULL se il tipo restituito non è associato a una raccolta di XML Schema. |
xml_collection_schema |
sysname | Contiene lo schema in cui viene definita la raccolta XML Schema associata a questo tipo. Questa colonna restituisce NULL se il tipo restituito non è associato a una raccolta di XML Schema. |
xml_collection_name |
sysname | Contiene il nome della raccolta XML Schema associata a questo tipo. Questa colonna restituisce NULL se il tipo restituito non è associato a una raccolta di XML Schema. |
is_xml_document |
bit | Ritorna 1 se il tipo di dato restituito è XML e quel tipo è garantito come un documento XML completo (incluso un nodo radice, invece che un frammento XML). In caso contrario restituisce 0. |
is_case_sensitive |
bit | Ritorna 1 se la colonna è di tipo stringa a maiuscole e minuscole (SEC). Restituisci 0 se non lo è. |
is_fixed_length_clr_type |
bit | Ritorna 1 se la colonna è di tipo CLR a lunghezza fissa. Restituisci 0 se non lo è. |
source_server |
sysname | Nome del server di origine (se ha origine in un server remoto). Il nome viene assegnato come appare in sys.servers. Restituisce NULL se la colonna ha origine nel server locale o se non è possibile determinare il server in cui ha origine. Viene popolata solo se sono richieste informazioni di esplorazione. |
source_database |
sysname | Nome del database di origine restituito dalla colonna in questo risultato. Restituisce NULL se non è possibile determinare il database. Viene popolata solo se sono richieste informazioni di esplorazione. |
source_schema |
sysname | Nome dello schema di origine restituito dalla colonna in questo risultato. Restituisce NULL se non è possibile determinare lo schema. Viene popolata solo se sono richieste informazioni di esplorazione. |
source_table |
sysname | Nome della tabella di origine restituita dalla colonna in questo risultato. Restituisce NULL se la tabella non può essere determinata. Viene popolata solo se sono richieste informazioni di esplorazione. |
source_column |
sysname | Nome della colonna di origine restituita dalla colonna del risultato. Restituisce NULL se la colonna non può essere determinata. Viene popolata solo se sono richieste informazioni di esplorazione. |
is_identity_column |
bit | Restituisce 1 se la colonna è una colonna identità e 0 se no. Restituisce NULL se non è possibile determinare che la colonna è una colonna Identity. |
is_part_of_unique_key |
bit | Restituisce 1 se la colonna fa parte di un indice unico (inclusi vincoli unici e primari) e 0 se non lo è. Restituisce NULL se non è possibile determinare che la colonna fa parte di un indice univoco. Viene popolata solo se sono richieste informazioni di esplorazione. |
is_updateable |
bit | Restituisce 1 se la colonna è aggiornabile e 0 se no. Restituisce NULL se non è possibile determinare che la colonna è aggiornabile. |
is_computed_column |
bit | Restituisce 1 se la colonna è una colonna calcolata e 0 se no. Restituisce NULL se non si può determinare se la colonna è una colonna calcolata. |
is_sparse_column_set |
bit | Restituisce 1 se la colonna è sparsa e 0 se non è così. Ritorna NULL se non si può determinare che la colonna fa parte di un insieme di colonne sparse. |
ordinal_in_order_by_list |
smallint | La posizione di questa colonna è in ORDER BY lista. Ritorna NULL se la colonna non appare nella ORDER BY lista, o se la ORDER BY lista non può essere determinata in modo univoco. |
order_by_list_length |
smallint | La lunghezza della ORDER BY lista.
NULL viene restituito se non ORDER BY c'è una lista o se la ORDER BY lista non può essere determinata in modo univoco. Questo valore è lo stesso per tutte le righe restituite da sp_describe_first_result_set. |
order_by_is_descending |
smallint |
ordinal_in_order_by_list Se non NULLè , la order_by_is_descending colonna indica la direzione della ORDER BY clausola per questa colonna. In caso contrario, segnala NULL. |
error_number |
int | Contiene il numero dell'errore restituito dalla funzione. Se non si è verificato alcun errore, la colonna contiene NULL. |
error_severity |
int | Contiene la gravità restituita dalla funzione. Se non si è verificato alcun errore, la colonna contiene NULL. |
error_state |
int | Contiene il messaggio sullo stato attuale restituito dalla funzione. Se non si è verificato alcun errore, la colonna contiene NULL. |
error_message |
nvarchar(4096) | Contiene il messaggio restituito dalla funzione. Se non si è verificato alcun errore, la colonna contiene NULL. |
error_type |
int | Contiene un numero intero che rappresenta l'errore restituito. Corrisponde a error_type_desc. Vedere l'elenco nelle osservazioni. |
error_type_desc |
nvarchar(60) | Contiene una breve stringa in caratteri maiuscoli che rappresenta l'errore restituito. Corrisponde a error_type. Vedere l'elenco nelle osservazioni. |
Osservazioni:
Questa funzione utilizza lo stesso algoritmo di sp_describe_first_result_set. Per maggiori informazioni, vedi sp_describe_first_result_set.
La tabella seguente elenca i tipi di errore e le loro descrizioni.
error_type |
error_type |
Description |
|---|---|---|
1 |
MISC |
Tutti errori che non sono altrimenti descritti. |
2 |
SYNTAX |
Errore di sintassi nel batch. |
3 |
CONFLICTING_RESULTS |
Il risultato non poteva essere determinato a causa di un conflitto tra due possibili prime affermazioni. |
4 |
DYNAMIC_SQL |
Il risultato non poteva essere determinato a causa di SQL dinamico che poteva potenzialmente restituire il primo risultato. |
5 |
CLR_PROCEDURE |
Il risultato non poteva essere determinato perché una procedura memorizzata CLR poteva potenzialmente restituire il primo risultato. |
6 |
CLR_TRIGGER |
Il risultato non poteva essere determinato perché un trigger CLR poteva potenzialmente restituire il primo risultato. |
7 |
EXTENDED_PROCEDURE |
Il risultato non poteva essere determinato perché una procedura di memoria estesa avrebbe potuto potenzialmente restituire il primo risultato. |
8 |
UNDECLARED_PARAMETER |
Il risultato non poteva essere determinato perché il tipo di dato di una o più colonne dell'insieme di risultati dipende potenzialmente da un parametro non dichiarato. |
9 |
RECURSION |
Il risultato non poteva essere determinato perché il lotto contiene un'istruzione ricorsiva. |
10 |
TEMPORARY_TABLE |
Il risultato non è stato determinato perché il batch contiene una tabella temporanea e non è supportato da sp_describe_first_result_set . |
11 |
UNSUPPORTED_STATEMENT |
Il risultato non poteva essere determinato perché il batch contiene un'istruzione non supportata da sp_describe_first_result_set (ad esempio, FETCH, REVERT, ecc.). |
12 |
OBJECT_TYPE_NOT_SUPPORTED |
Il @object_id passato alla funzione non è supportato (cioè, non è una procedura memorizzata). |
13 |
OBJECT_DOES_NOT_EXIST |
Il @object_id passaggio alla funzione non si trova nel catalogo di sistema. |
Permissions
È necessaria l'autorizzazione per eseguire l'argomento @tsql .
Examples
I campioni di codice in questo articolo utilizzano il AdventureWorks2025 database di esempi di ORAdventureWorksDW2025, che puoi scaricare dal repository GitHub Azure Data SQL Samples Repository.
Puoi adattare gli esempi nell'articolo di sp_describe_first_result_set per usare sys.dm_exec_describe_first_result_set.
A. Informazioni di restituzione su una singola Transact-SQL estratto conto
Il codice seguente restituisce informazioni sui risultati di un'istruzione 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. Informazioni di restituzione su una procedura
Il seguente esempio crea una stored procedure chiamata pr_TestProc che restituisce due set di risultati. Poi l'esempio dimostra che sys.dm_exec_describe_first_result_set restituisce informazioni sul primo insieme di risultati nella procedura.
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. Restituire metadati da un lotto che contiene più istruzioni
Nell'esempio seguente viene valutato un batch contenente due istruzioni Transact-SQL. Il set di risultati descrive il primo set di risultati restituito.
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;