Partilhar via


sys.columns (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Retorna uma linha para cada coluna de um objeto que tem colunas, como modos de exibição ou tabelas. A lista a seguir contém os tipos de objeto que têm colunas:

  • Funções de montagem com valor de tabela (FT)
  • Funções SQL (IF) com valor de tabela embutido
  • Quadros internos (IT)
  • Tabelas do sistema (S)
  • Funções SQL com valor de tabela (TF)
  • Tabelas de utilizador (U)
  • Visualizações (V)
Nome da coluna Tipo de dados Descrição
object_id Int ID do objeto ao qual esta coluna pertence.
name sysname Nome da coluna. É único dentro do objeto.
column_id Int ID da coluna. É único dentro do objeto. Os IDs de coluna podem não ser sequenciais.
system_type_id tinyint ID do tipo de sistema da coluna.
user_type_id Int ID do tipo da coluna, conforme definido pelo usuário. Para retornar o nome do tipo, junte-se à exibição de catálogo sys.types 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 text, ntext e image , o max_length valor é 16 (representando apenas o ponteiro de 16 bytes) ou o valor definido por sp_tableoption 'text in row'.
precision tinyint Precisão da coluna, se for numérica; caso contrário, 0.
scale tinyint Escala da coluna, se baseada em números; caso contrário, 0.
collation_name sysname Nome do agrupamento da coluna, se baseado em caracteres; caso contrário NULL.
is_nullable bit 1 = A coluna é anulável
0 = A coluna não é anulável
is_ansi_padded bit 1 = A coluna usa ANSI_PADDING ON o comportamento se caractere, binário ou variante

0 = Coluna não é caractere, binário ou variante
is_rowguidcol bit 1 = A coluna é declarada ROWGUIDCOL
is_identity bit 1 = A coluna tem valores de identidade
is_computed bit 1 = Coluna é uma coluna calculada
is_filestream bit 1 = Coluna é uma coluna FILESTREAM
is_replicated bit 1 = A coluna é replicada
is_non_sql_subscribed bit 1 = A coluna tem um assinante que não é do SQL Server
is_merge_published bit 1 = A coluna é publicada em mesclagem
is_dts_replicated bit 1 = A coluna é replicada usando SSIS
is_xml_document bit 1 = O conteúdo é um documento XML completo

0 = O conteúdo é um fragmento de documento ou o tipo de dados da coluna não é xml
xml_collection_id Int Diferente de zero se o tipo de dados da coluna for xml e o XML for digitado. O valor é a ID da coleção que contém o namespace do esquema XML de validação da coluna

0 = Nenhuma coleção de esquema XML
default_object_id Int ID do objeto padrão, independentemente de ser um objeto autônomo sp_bindefault ou uma restrição embutida no nível DEFAULT da coluna. A parent_object_id coluna de um objeto padrão inline ao nível da coluna é uma referência de volta à própria tabela.

0 = Sem padrão
rule_object_id Int ID da regra autónoma ligada à coluna usando sys.sp_bindrule.

0 = Nenhuma regra independente. Para restrições no nível CHECK da coluna, consulte sys.check_constraints.
is_sparse bit 1 = Coluna é uma coluna esparsa. Para obter mais informações, consulte Usar colunas esparsas.
is_column_set bit 1 = Coluna é um conjunto de colunas. Para obter mais informações, consulte Usar colunas esparsas.
generated_always_type tinyint Identifica quando o valor da coluna é gerado (é sempre 0 para colunas em tabelas do sistema).

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de dados SQL.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL.

5 = AS_TRANSACTION_ID_START
6 = AS_TRANSACTION_ID_END
7 = AS_SEQUENCE_NUMBER_START
8 = AS_SEQUENCE_NUMBER_END

Para obter mais informações, consulte Tabelas temporais.
generated_always_type_desc Nvarchar(60) Descrição textual do generated_always_type valor (sempre NOT_APPLICABLE para colunas em tabelas do sistema)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de dados SQL.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type Int Tipo de encriptação:

1 = Encriptação determinística
2 = Encriptação aleatória

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL
encryption_type_desc Nvarchar(64) Descrição do tipo de encriptação:

RANDOMIZED
DETERMINISTIC

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL
encryption_algorithm_name sysname Nome do algoritmo de encriptação. Só o AEAD_AES_256_CBC_HMAC_SHA_512 é suportado.

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL
column_encryption_key_id Int ID da chave de encriptação da coluna (CEK).

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL
column_encryption_key_database_name sysname O nome do banco de dados onde a chave de criptografia de coluna existe, se diferente do banco de dados da coluna. NULL se a chave existir no mesmo banco de dados que a coluna.

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL
is_hidden bit Indica se a coluna está oculta:

0 = coluna regular, não oculta e visível
1 = coluna oculta

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL
is_masked bit Indica se a coluna está mascarada pelo mascaramento dinâmico de dados:

0 = coluna regular, sem máscara
1 = coluna mascarada

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores e Banco de Dados SQL
graph_type Int Coluna interna com um conjunto de valores. Os valores estão entre 1 e 8 para colunas de gráfico e NULL para outros.
graph_type_desc Nvarchar(60) Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
is_data_deletion_filter_column bit Indica se a coluna é a coluna do filtro de retenção de dados da tabela.

Aplica-se a: Azure SQL Edge
ledger_view_column_type Int Caso contrário NULL, indica o tipo de coluna em uma exibição contábil:

1 = TRANSACTION_ID
2 = SEQUENCE_NUMBER
3 = OPERATION_TYPE
4 = OPERATION_TYPE_DESC

Para obter mais informações, consulte Visão geral do livro-razão.

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL
ledger_view_column_type_desc Nvarchar(60) Caso contrário NULL, contém uma descrição textual do tipo de coluna em uma exibição contábil:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL
is_dropped_ledger_column bit Indica uma coluna da tabela contábil que foi descartada.

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores e Banco de Dados SQL
vector_dimensions Int Indica quantas dimensões tem o vetor.

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores, e SQL Database
vector_base_type tinyint Indica o tipo de dados usado para armazenar valores de dimensões vetoriais.

0 = flutuador de 32 bits (precisão simples)
1 = flutuador de 16 bits (meia precisão ) 1

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores, e SQL Database
vector_base_type_desc Nvarchar(10) Contém a descrição textual do tipo de dados usado para armazenar valores de dimensões vetoriais.

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores, e SQL Database

1 Para mais informações, veja Formato de ponto flutuante de meia-precisão.

Permissões

A visibilidade dos metadados nas visualizações de catálogo é limitada aos itens de segurança que um utilizador possui ou nos quais o utilizador recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

Exemplos de utilização

Obter detalhes da coluna para uma tabela

Para obter metadados das colunas numa tabela, use o seguinte código:

CREATE TABLE dbo.[sample]
(
    id INT NOT NULL,
    col1 VARBINARY (10) NULL
);

SELECT c.[name] AS column_name,
       t.[name] AS [type_name],
       c.[max_length],
       c.[precision],
       c.[scale]
FROM sys.columns AS c
     INNER JOIN sys.types AS t
         ON c.user_type_id = t.user_type_id
WHERE object_id = object_id('dbo.sample');