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 um @object_id como parâmetro e descreve os primeiros metadados de resultado para o módulo com esse ID. O @object_id especificado pode ser o ID de um procedimento armazenado Transact-SQL ou de um gatilho Transact-SQL. Se for o ID de qualquer outro objeto (como uma vista, tabela, função ou procedimento CLR), será especificado um erro nas colunas de erro do resultado.
sys.dm_exec_describe_first_result_set_for_object tem a mesma definição de conjunto de resultados que sys.dm_exec_describe_first_result_set (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_for_object
( @object_id , @include_browse_information )
Arguments
@object_id
O @object_id de um procedimento Transact-SQL armazenado ou de um gatilho Transact-SQL.
@object_id é o tipo int.
@include_browse_information
@include_browse_information é tipo bit. Se definida para 1, cada consulta é analisada como se tivesse uma opção FOR BROWSE na consulta. Devolve colunas chave adicionais e informação da tabela de origem.
Tabela retornada
Estes metadados comuns são devolvidos como um conjunto de resultados com uma linha para cada coluna nos metadados de resultados. Cada linha descreve o tipo e a nulidade da coluna no formato descrito na secção 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 se a coluna é uma coluna extra adicionada para fins de informação de navegação que não aparece efetivamente 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. Caso contrário, é NULO. |
| is_nullable | bit | Contém o valor 1 se a coluna permitir NULLs, 0 se a coluna não permitir NULLs, e 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 do tipo de dados. Inclui 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 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'. |
| precision | 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 devolverá 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 devolverá 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 devolverá 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 devolverá 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 sensível a maiúsculas minúsculas e 0 se não for. |
| is_fixed_length_clr_type | bit | Retorna 1 se a coluna for do tipo CLR de comprimento fixo e 0 se não for. |
| source_server | sysname | O nome do servidor de origem é devolvido pela coluna neste resultado (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 deste 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ção única e primária) e 0 se não. 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. Retorna NULL se não for possível determinar que a coluna é uma coluna computada. |
| 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 na lista ORDER BY 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 | Comprimento da lista ORDER BY. Devolve NULL 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. Contém NULL se não ocorrer erro na coluna. |
| error_severity | int | Contém a gravidade devolvida pela função. Contém NULL se não ocorrer erro na coluna. |
| error_state | int | Contém a mensagem de estado devolvida 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_ID_NOT_SUPPORTED | A @object_id função passada não é suportada (ou seja, não é um procedimento armazenado) |
| 13 | OBJECT_ID_DOES_NOT_EXIST | A @object_id passagem para a função não foi encontrada no catálogo do sistema. |
Permissions
Requer permissão para executar o @tsql argumento.
Examples
A. Devolver metadados com e sem informação de navegação
O exemplo seguinte cria um procedimento armazenado chamado TestProc2 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, com e sem a informação de navegação.
CREATE PROC TestProc2
AS
SELECT object_id, name FROM sys.objects ;
SELECT name, schema_id, create_date FROM sys.objects ;
GO
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 0) ;
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 1) ;
GO
B. Combinar a função sys.dm_exec_describe_first_result_set_for_object e uma tabela ou vista
O exemplo seguinte utiliza tanto a vista de catálogo do sistema sys.procedures como a função sys.dm_exec_describe_first_result_set_for_object para mostrar metadados dos conjuntos de resultados de todos os procedimentos armazenados na AdventureWorks2025 base de dados.
USE AdventureWorks2022;
GO
SELECT p.name, r.*
FROM sys.procedures AS p
CROSS APPLY sys.dm_exec_describe_first_result_set_for_object(p.object_id, 0) AS r;
GO
Ver também
sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set (Transact-SQL)