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
AzureIstanza gestita di SQL di
AzureDatabase SQL in 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)
Argomenti
@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 colonna | Tipo di dati | Descrizione |
|---|---|---|
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. Esegue il mapping 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. Esegue il mapping 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 |
Descrizione |
|---|---|---|
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. |
Autorizzazioni
È necessaria l'autorizzazione per eseguire l'argomento @tsql .
Esempi
Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.
Puoi adattare gli esempi nell'articolo di sp_describe_first_result_set per usare sys.dm_exec_describe_first_result_set.
R. 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;