Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Banco de dados SQL no Microsoft Fabric
Essa função de gerenciamento dinâmico toma uma instrução Transact-SQL como parâmetro e retorna os metadados do primeiro conjunto de resultados da instrução.
sys.dm_exec_describe_first_result_set retorna a mesma definição de conjunto de resultados que sys.dm_exec_describe_first_result_set_for_object e é semelhante a sp_describe_first_result_set.
Convenções de sintaxe de Transact-SQL
Sintaxe
sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)
Argumentos
@tsql
Uma ou mais instruções Transact-SQL. O @tsql lote pode ser nvarchar(n) ou nvarchar(max).
@params
@params fornece uma string de declaração para parâmetros do lote Transact-SQL, semelhante a sp_executesql. Os parâmetros podem ser nvarchar(n) ou nvarchar(max).
Uma única string que contém as definições de todos os parâmetros incorporados no lote @tsql . A cadeia de caracteres deve ser uma constante Unicode ou uma variável Unicode. Cada definição de parâmetro consiste em um nome de parâmetro e um tipo de dados.
n é um espaço reservado que indica definições de parâmetro adicionais. Todo parâmetro especificado em stmt deve ser definido em @params. Se a instrução Transact-SQL ou o lote na instrução não contiver parâmetros, @params não será necessário.
NULL é o valor padrão para esse parâmetro.
@include_browse_information
Se definida como 1, cada consulta é analisada como se tivesse uma FOR BROWSE opção na consulta. O resultado inclui colunas adicionais de chave e informações da tabela de fonte.
Tabela retornada
A função retorna esses metadados comuns como um conjunto de resultados. Cada linha corresponde a uma coluna nos metadados de resultados e descreve o tipo e a nulidade da coluna no formato mostrado na tabela a seguir. Se a primeira instrução não existir para todo caminho de controle, a função retorna um conjunto de resultados com zero linhas.
| Nome da Coluna | Tipo de dados | Descrição |
|---|---|---|
is_hidden |
bit | Especifica que a coluna é uma coluna extra, adicionada para fins de navegação e informação, que na verdade não aparece no conjunto de resultados. |
column_ordinal |
int | Contém a posição ordinal da coluna no conjunto de resultados. A posição da primeira coluna é especificada como 1. |
name |
sysname | Conterá o nome da coluna se um nome puder ser determinado. Se não, é NULL. |
is_nullable |
bit | Contém os seguintes valores: Retorna 1 se a coluna permitir NULL valores.Retorna 0 se a coluna não permitir NULL valores.Retorna 1 se não for possível determinar que a coluna permite NULL valores. |
system_type_id |
int | Contém o system_type_id do tipo de dado da coluna conforme especificado em sys.types. Para tipos CLR, mesmo que a system_type_name coluna retorne NULL, essa coluna retorna 240. |
system_type_name |
nvarchar(256) | Contém o nome e argumentos (como comprimento, precisão, escala), especificados para o tipo de dados da coluna. Se o tipo de dados for um tipo de alias definido pelo usuário, o tipo de sistema subjacente será especificado aqui. Se o tipo de dado for um tipo CLR definido pelo usuário, NULL é retornado nesta coluna. |
max_length |
smallint | Comprimento máximo (em bytes) da coluna.-1 = O tipo de dados da coluna é varchar(max), nvarchar(max), varbinary(max) ou xml.Para colunas de texto , o max_length valor é 16, ou o valor definido por sp_tableoption 'text in row'. |
precision |
tinyint | Precisão da coluna, se tiver base numérica. Caso contrário, retornará 0. |
scale |
tinyint | Escala da coluna, se tiver base numérica. Caso contrário, retornará 0. |
collation_name |
sysname | Nome da ordenação da coluna, se baseada em caracteres. Caso contrário, retornará NULL. |
user_type_id |
int | Para tipos CLR e alias, contém o user_type_id tipo de dados da coluna, conforme especificado em sys.types. Caso contrário, é NULL. |
user_type_database |
sysname | Para tipos de CLR e de alias, contém o nome do banco de dados no qual o tipo é definido. Caso contrário, é NULL. |
user_type_schema |
sysname | Para tipos de CLR e de alias, contém o nome do esquema no qual o tipo é definido. Caso contrário, é NULL. |
user_type_name |
sysname | Para tipos de CLR e de alias, contém o nome do tipo. Caso contrário, é NULL. |
assembly_qualified_type_name |
nvarchar(4000) | Para tipos de CLR, retorna o nome do assembly e da classe que define o tipo. Caso contrário, é NULL. |
xml_collection_id |
int | Contém o xml_collection_id tipo de dados da coluna, conforme especificado em sys.columns. Essa coluna retornará NULL se o tipo retornado não estiver associado a uma coleção de esquemas XML. |
xml_collection_database |
sysname | Contém o banco de dados no qual a coleção de esquemas XML associada a esse tipo está definida. Essa coluna retornará NULL se o tipo retornado não estiver associado a uma coleção de esquemas XML. |
xml_collection_schema |
sysname | Contém o esquema no qual a coleção de esquemas XML associada a esse tipo está definida. Essa coluna retornará NULL se o tipo retornado não estiver associado a uma coleção de esquemas XML. |
xml_collection_name |
sysname | Contém o nome da coleção de esquemas XML associada a esse tipo. Essa coluna retornará NULL se o tipo retornado não estiver associado a uma coleção de esquemas XML. |
is_xml_document |
bit | Retorna 1 se o tipo de dado retornado for XML e esse tipo for garantido como um documento XML completo (incluindo um nó raiz, em vez de um fragmento XML). Caso contrário, retornará 0. |
is_case_sensitive |
bit | Retorna 1 se a coluna for do tipo string sensível a maiúsculas e maiúsculas. Devolve 0 se não estiver. |
is_fixed_length_clr_type |
bit | Retorna 1 se a coluna for do tipo CLR de comprimento fixo. Devolve 0 se não estiver. |
source_server |
sysname | Nome do servidor de origem (se for originado de um servidor remoto). O nome é dado como aparece em sys.servers. Retorna NULL se a coluna for originada no servidor local ou se não for possível determinar em qual servidor ela se origina. Será populado somente se informações de navegação forem solicitadas. |
source_database |
sysname | Nome do banco de dados de origem retornado pela coluna neste resultado. Retorna NULL se o banco de dados não puder ser determinado. Será populado somente se informações de navegação forem solicitadas. |
source_schema |
sysname | Nome do esquema de origem retornado pela coluna neste resultado. Retorna NULL se o esquema não puder ser determinado. Será populado somente se informações de navegação forem solicitadas. |
source_table |
sysname | Nome da tabela de origem retornado pela coluna neste resultado. Retorna NULL se a tabela não puder ser determinada. Será populado somente se informações de navegação forem solicitadas. |
source_column |
sysname | Nome da coluna de origem retornado pela coluna de resultado. Retorna NULL se a coluna não puder ser determinada. Será populado somente se informações de navegação forem solicitadas. |
is_identity_column |
bit | Retorna 1 se a coluna for uma coluna identidade e 0 se não for. Retorna NULL se não for possível determinar que a coluna é uma coluna de identidade. |
is_part_of_unique_key |
bit | Retorna 1 se a coluna faz parte de um índice único (incluindo restrições únicas e primárias) e 0 se não for. Retorna NULL se não for possível determinar que a coluna faz parte de um índice exclusivo. Será populado somente se informações de navegação forem solicitadas. |
is_updateable |
bit | Retorna 1 se a coluna for atualizável e 0 se não for assim. Retorna NULL se não for possível determinar que a coluna é atualizável. |
is_computed_column |
bit | Retorna 1 se a coluna for uma coluna calculada e 0 se não. Retorna NULL se não puder ser determinado se a coluna é uma coluna computada. |
is_sparse_column_set |
bit | Retorna 1 se a coluna for esparsa e 0 se não. Retorna NULL se não for possível determinar que a coluna faz parte de um conjunto de colunas esparsas. |
ordinal_in_order_by_list |
smallint | A posição desta coluna está na ORDER BY lista. Retorna NULL se a coluna não aparecer na ORDER BY lista, ou se a ORDER BY lista não puder ser determinada de forma única. |
order_by_list_length |
smallint | O tamanho da ORDER BY lista.
NULL é devolvida se não ORDER BY houver lista ou se a ORDER BY lista não puder ser determinada de forma única. Esse valor é o mesmo para todas as linhas retornadas por sp_describe_first_result_set. |
order_by_is_descending |
smallint | Se não ordinal_in_order_by_list for NULL, a coluna informará order_by_is_descending a ORDER BY direção da cláusula para essa coluna. Caso contrário, ele relata NULL. |
error_number |
int | Contém o número do erro retornado pela função. Se não ocorreu erro, a coluna contém NULL. |
error_severity |
int | Contém a severidade do erro retornado pela função. Se não ocorreu erro, a coluna contém NULL. |
error_state |
int | Contém a mensagem de estado retornada pela função. Se não ocorreu erro, a coluna contém NULL. |
error_message |
nvarchar(4096) | Contém a mensagem retornada pela função. Se não ocorreu erro, a coluna contém NULL. |
error_type |
int | Contém um inteiro que representa o erro que é retornado. Mapeia para error_type_desc. Consulte a lista sob comentários. |
error_type_desc |
nvarchar(60) | Contém uma pequena cadeia de caracteres maiúsculos que representa o erro sendo retornado. Mapeia para error_type. Consulte a lista sob comentários. |
Observações
Essa função usa o mesmo algoritmo que sp_describe_first_result_set. Para mais informações, consulte sp_describe_first_result_set.
A tabela a seguir lista os tipos de erro e suas descrições.
error_type |
error_type |
Descrição |
|---|---|---|
1 |
MISC |
Todos erros que não são descritos de outra forma. |
2 |
SYNTAX |
Um erro de sintaxe ocorreu no lote. |
3 |
CONFLICTING_RESULTS |
O resultado não pôde ser determinado devido a um conflito entre duas possíveis primeiras afirmações. |
4 |
DYNAMIC_SQL |
O resultado não pôde ser determinado por causa do SQL dinâmico, que poderia potencialmente retornar o primeiro resultado. |
5 |
CLR_PROCEDURE |
O resultado não pôde ser determinado porque um procedimento armazenado CLR poderia potencialmente retornar o primeiro resultado. |
6 |
CLR_TRIGGER |
O resultado não pôde ser determinado porque um gatilho CLR poderia potencialmente devolver o primeiro resultado. |
7 |
EXTENDED_PROCEDURE |
O resultado não pôde ser determinado porque um procedimento armazenado estendido poderia potencialmente devolver o primeiro resultado. |
8 |
UNDECLARED_PARAMETER |
O resultado não pôde ser determinado porque o tipo de dado de uma ou mais colunas do conjunto de resultados potencialmente depende de um parâmetro não declarado. |
9 |
RECURSION |
O resultado não pôde ser determinado porque o lote contém uma instrução recursiva. |
10 |
TEMPORARY_TABLE |
O resultado não pôde ser determinado porque o lote contém uma tabela temporária e não é suportado por sp_describe_first_result_set . |
11 |
UNSUPPORTED_STATEMENT |
O resultado não pôde ser determinado porque o lote contém uma instrução que não é suportada por sp_describe_first_result_set (por exemplo, FETCH, REVERT, etc.). |
12 |
OBJECT_TYPE_NOT_SUPPORTED |
O @object_id passado para a função não é suportado (ou seja, não é um procedimento armazenado). |
13 |
OBJECT_DOES_NOT_EXIST |
O @object_id passado para a função não aparece no catálogo do sistema. |
Permissions
Requer permissão para executar o argumento @tsql .
Examples
Os exemplos de código neste artigo usam o AdventureWorks2025, AdventureWorksDW2025, ou AdventureWorksLT2025 banco de dados de exemplo, que você pode baixar do repositório GitHub do Azure Data SQL Samples Repository.
Você pode adaptar os exemplos do artigo de sp_describe_first_result_set para usar sys.dm_exec_describe_first_result_set.
A. Informações de retorno sobre uma única declaração Transact-SQL
O código a seguir retorna informações sobre os resultados de uma instrução 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. Informações de retorno sobre um procedimento
O exemplo a seguir cria um procedimento armazenado chamado pr_TestProc que retorna dois conjuntos de resultados. Então, o exemplo demonstra que sys.dm_exec_describe_first_result_set retorna informações sobre o primeiro conjunto de resultados no procedimento.
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. Devolver metadados de um lote que contém múltiplas instruções
O exemplo a seguir avalia um lote que contém duas instruções Transact-SQL. O conjunto de resultados descreve o primeiro conjunto de resultados retornado.
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;