Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Esta função de gestão dinâmica toma uma instrução Transact-SQL como parâmetro e descreve os metadados do primeiro conjunto de resultados da instrução.
sys.dm_exec_describe_first_result_set tem a mesma definição de conjunto de resultados que sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) e é semelhante a sp_describe_first_result_set (Transact-SQL).
Transact-SQL convenções de sintaxe
Sintaxe
sys.dm_exec_describe_first_result_set(@tsql, @params, @include_browse_information)
Arguments
@tsql
Uma ou mais Transact-SQL declarações.
Transact-SQL_batch pode ser nvarchar(n) ou nvarchar(max).
@params
@params fornece uma cadeia de declaração para parâmetros do lote Transact-SQL, semelhante à sp_executesql. Os parâmetros podem ser nvarchar(n) ou nvarchar(max).
É uma cadeia que contém as definições de todos os parâmetros que foram incorporados no Transact-SQL_batch. 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âmetros adicionais. Cada parâmetro especificado em stmt deve ser definido em @params. Se a instrução Transact-SQL ou lote na instrução não contiver parâmetros, @params não é obrigatório. NULL é o valor padrão deste parâmetro.
@include_browse_information
Se definida para 1, cada consulta é analisada como se tivesse uma opção FOR BROWSE na consulta. Colunas-chave adicionais e informações da tabela de origem são retornadas.
Tabela retornada
Estes metadados comuns são devolvidos como um conjunto de resultados. Uma linha para cada coluna nos metadados de resultados descreve o tipo e a nulidade da coluna no formato mostrado na tabela seguinte. Se a primeira afirmação não existir para todos os caminhos de controlo, é devolvido um conjunto de resultados com zero linhas.
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
| is_hidden | bit | Especifica que a coluna é uma coluna extra adicionada para fins de navegação e informação que não aparece realmente 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 será especificada como 1. |
| name | sysname | Contém o nome da coluna, caso seja possível determinar um nome. Se não, conterá NULL. |
| is_nullable | bit | Contém os seguintes valores: Valor 1 se a coluna permitir NULLs. Valor 0 se a coluna não permitir NULLs. Valor 1 se não for possível determinar que a coluna permite NULLs. |
| system_type_id | int | Contém a system_type_id do tipo de dados da coluna conforme especificado em sys.types. Para tipos CLR, mesmo que a coluna system_type_name devolva NULL, esta coluna devolverá o valor 240. |
| system_type_name | Nvarchar(256) | Contém o nome e os argumentos (como comprimento, precisão, escala), especificados para o tipo de dado da coluna. Se o tipo de dado for um tipo de alias definido pelo utilizador, o tipo de sistema subjacente é especificado aqui. Se o tipo de dado for um tipo CLR definido pelo utilizador, NULL é devolvido 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 valor max_length será 16 ou o valor definido por sp_tableoption 'texto na linha'. |
| precisão | tinyint | A precisão da coluna se for baseada em números. Caso contrário, devolve 0. |
| scale | tinyint | Escala da coluna se baseada em números. Caso contrário, devolve 0. |
| collation_name | sysname | Nome da coluna da coluna se for baseada em caracteres. Caso contrário, devolve NULL. |
| user_type_id | int | Para CLR e tipos de alias, contém a user_type_id do tipo de dados da coluna conforme especificado em sys.types. Caso contrário, é NULO. |
| user_type_database | sysname | Para CLR e tipos de alias, contém o nome da base de dados onde o tipo está definido. Caso contrário, é NULO. |
| user_type_schema | sysname | Para tipos CLR e alias, contém o nome do esquema em que o tipo está definido. Caso contrário, é NULO. |
| user_type_name | sysname | Para CLR e tipos de alias, contém o nome do tipo. Caso contrário, é NULO. |
| assembly_qualified_type_name | Nvarchar(4000) | Para tipos CLR, devolve o nome da assembly e da classe que define o tipo. Caso contrário, é NULO. |
| xml_collection_id | int | Contém a xml_collection_id do tipo de dados da coluna conforme especificado em sys.columns. Esta coluna devolve NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML. |
| xml_collection_database | sysname | Contém a base de dados onde está definida a coleção de esquemas XML associada a este tipo. Esta coluna devolve NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML. |
| xml_collection_schema | sysname | Contém o esquema em que a coleção de esquemas XML associada a este tipo está definida. Esta coluna devolve NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML. |
| xml_collection_name | sysname | Contém o nome da coleção de esquemas XML associada a este tipo. Esta coluna devolve NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML. |
| is_xml_document | bit | Retorna 1 se o tipo de dado devolvido 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, devolve 0. |
| is_case_sensitive | bit | Retorna 1 se a coluna for de um tipo de cadeia com sensibilidade a maiúsculas minú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 tal como aparece em sys.servers. Devolve NULL se a coluna tiver origem no servidor local ou se não for possível determinar em que servidor se origina. Só é preenchido se forem solicitadas informações de navegação. |
| source_database | sysname | O nome da base de dados originária é devolvido pela coluna deste resultado. Devolve NULL se a base de dados não puder ser determinada. Só é preenchido se forem solicitadas informações de navegação. |
| source_schema | sysname | Nome do esquema originário devolvido pela coluna neste resultado. Devolve NULL se o esquema não puder ser determinado. Só é preenchido se forem solicitadas informações de navegação. |
| source_table | sysname | O nome da tabela de origem é devolvido pela coluna deste resultado. Retorna NULL se a tabela não puder ser determinada. Só é preenchido se forem solicitadas informações de navegação. |
| source_column | sysname | O nome da coluna de origem é devolvido pela coluna do resultado. Retorna NULL se a coluna não puder ser determinada. Só é preenchido se forem solicitadas informações de navegação. |
| is_identity_column | bit | Devolve 1 se a coluna for uma coluna identidade e 0 se não. Retorna NULL se não for possível determinar que a coluna é uma coluna identidade. |
| is_part_of_unique_key | bit | Retorna 1 se a coluna fizer parte de um índice único (incluindo restrições únicas e primárias) e 0 se não fizer. Devolve NULL se não for possível determinar que a coluna faz parte de um índice único. Só é preenchido se forem solicitadas informações de navegação. |
| is_updateable | bit | Retorna 1 se a coluna for atualizável e 0 se não for possível. Retorna NULL se não for possível determinar que a coluna é atualizável. |
| is_computed_column | bit | Devolve 1 se a coluna for uma coluna calculada e 0 se não for. Devolve NULL se não puder ser determinado se a coluna é uma coluna calculada. |
| is_sparse_column_set | bit | Devolve 1 se a coluna for esparsa e 0 se não. Retorna NULL se não se puder determinar que a coluna faz parte de um conjunto de colunas esparsas. |
| ordinal_in_order_by_list | smallint | A posição desta coluna está por ORDEM POR lista. Devolve NULL se a coluna não aparecer na lista ORDER BY, ou se a lista ORDER BY não puder ser determinada de forma única. |
| order_by_list_length | smallint | O comprimento da lista ORDER BY. NULL é devolvido se não existir uma lista ORDER BY ou se a lista ORDER BY não puder ser determinada de forma única. Note que este valor será o mesmo para todas as linhas devolvidas por sp_describe_first_result_set. |
| order_by_is_descending | smallint NULL | Se o ordinal_in_order_by_list não for NULL, a coluna order_by_is_descending reporta a direção da cláusula ORDER BY para esta coluna. Caso contrário, reporta NULL. |
| error_number | int | Contém o número de erro devolvido pela função. Se não ocorrer erro, a coluna conterá NULL. |
| error_severity | int | Contém a gravidade devolvida pela função. Se não ocorrer erro, a coluna conterá NULL. |
| error_state | int | Contém a mensagem de estado. devolvido pela função. Se não ocorrer erro, a coluna conterá NULL. |
| error_message | nvarchar(4096) | Contém a mensagem devolvida pela função. Se não ocorrer erro, a coluna conterá NULL. |
| error_type | int | Contém um inteiro que representa o erro que está a ser devolvido. Mapas para error_type_desc. Veja a lista em observações. |
| error_type_desc | nvarchar(60) | Contém uma curta cadeia maiúscula que representa o erro devolvido. Mapas para error_type. Veja a lista em observações. |
Observações
Esta função utiliza o mesmo algoritmo que sp_describe_first_result_set. Para mais informações, consulte sp_describe_first_result_set (Transact-SQL).
A tabela seguinte lista os tipos de erro e as suas descrições
| error_type | error_type | Description |
|---|---|---|
| 1 | MISC | Todos os erros que não são descritos de outra forma. |
| 2 | SINTAXE | Ocorreu um erro de sintaxe 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 devido ao SQL dinâmico que poderia potencialmente devolver o primeiro resultado. |
| 5 | CLR_PROCEDURE | O resultado não podia ser determinado porque um procedimento armazenado CLR poderia potencialmente devolver 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 podia ser determinado porque um procedimento armazenado prolongado poderia potencialmente devolver o primeiro resultado. |
| 8 | UNDECLARED_PARAMETER | O resultado não pôde ser determinado porque o tipo de dados de uma ou mais colunas do conjunto de resultados depende potencialmente de um parâmetro não declarado. |
| 9 | RECURSÃO | O resultado não pôde ser determinado porque o lote contém uma afirmaçã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 | A @object_id passada à função não é suportada (ou seja, não é um procedimento armazenado) |
| 13 | OBJECT_DOES_NOT_EXIST | O @object_id passado para a função não foi encontrado no catálogo do sistema. |
Permissions
Requer permissão para executar o argumento @tsql.
Examples
Exemplos adicionais no tópico sp_describe_first_result_set (Transact-SQL) podem ser adaptados para usar sys.dm_exec_describe_first_result_set.
A. Retorno de informação sobre uma única declaração Transact-SQL
O código seguinte devolve informações sobre os resultados de uma declaração Transact-SQL.
USE AdventureWorks2022;
GO
SELECT * FROM sys.dm_exec_describe_first_result_set
(N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0) ;
B. Devolver informações sobre um procedimento
O exemplo seguinte cria um procedimento armazenado chamado pr_TestProc que devolve dois conjuntos de resultados. Depois, o exemplo demonstra que sys.dm_exec_describe_first_result_set devolve informação sobre o primeiro conjunto de resultados no procedimento.
USE AdventureWorks2022;
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 seguinte avalia um lote que contém duas instruções Transact-SQL. O conjunto de resultados descreve o primeiro conjunto de resultados devolvido.
USE AdventureWorks2022;
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;
GO
Ver também
sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)