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
AzureInstância
Gerenciada de SQL do AzureBanco 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. |
Comentários
Essa função usa o mesmo algoritmo que sp_describe_first_result_set. Para mais informações, veja 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. |
Permissões
Requer permissão para executar o argumento @tsql .
Exemplos
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.
Você pode adaptar os exemplos do artigo de sp_describe_first_result_set para usar sys.dm_exec_describe_first_result_set.
R. 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;