Condividi tramite


sys.columns (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Restituisce una riga per ogni colonna di un oggetto contenente colonne, ad esempio viste o tabelle. L'elenco seguente contiene i tipi di oggetto con colonne:

  • Funzioni assembly con valori di tabella (FT)
  • Funzioni SQL inline con valori di tabella (IF)
  • Tabelle interne (IT)
  • Tabelle di sistema (S)
  • Funzioni SQL con valori di tabella (TF)
  • Tabelle utente (U)
  • Viste (V)
Nome colonna Tipo di dati Descrizione
object_id int ID dell'oggetto a cui appartiene la colonna.
name sysname Nome della colonna. Valore univoco all'interno dell'oggetto.
column_id int ID della colonna. Valore univoco all'interno dell'oggetto. È possibile che gli ID di colonna non siano sequenziali.
system_type_id tinyint ID del tipo di sistema della colonna.
user_type_id int ID del tipo di colonna definito dall'utente. Per restituire il nome del tipo, aggiungere alla vista del catalogo sys.types in questa colonna.
max_length smallint Lunghezza massima in byte della colonna.

-1 = Il tipo di dati della colonna è varchar(max), nvarchar(max), varbinary(max)o xml.

Per le colonne text, ntext e image , il max_length valore è 16 (che rappresenta solo il puntatore a 16 byte) o il valore impostato da sp_tableoption 'text in row'.
precision tinyint Precisione della colonna se in base numerica; in caso contrario, 0.
scale tinyint Scala della colonna se basata su numerico; in caso contrario, 0.
collation_name sysname Nome delle regole di confronto della colonna se basato su caratteri; in caso contrario NULL, .
is_nullable bit 1 = La colonna è nullable
0 = La colonna non è nullable
is_ansi_padded bit 1 = La colonna usa il ANSI_PADDING ON comportamento se carattere, binario o variante

0 = La colonna non è di tipo carattere, binario o variant
is_rowguidcol bit 1 = La colonna è dichiarata ROWGUIDCOL
is_identity bit 1 = La colonna ha valori Identity
is_computed bit 1 = La colonna è una colonna calcolata
is_filestream bit 1 = La colonna è una colonna FILESTREAM
is_replicated bit 1 = La colonna viene replicata
is_non_sql_subscribed bit 1 = La colonna ha un sottoscrittore non SQL Server
is_merge_published bit 1 = La colonna viene pubblicata in merge
is_dts_replicated bit 1 = La colonna viene replicata tramite SSIS
is_xml_document bit 1 = Il contenuto è un documento XML completo

0 = Il contenuto è un frammento di documento o il tipo di dati della colonna non è xml
xml_collection_id int Diverso da zero se il tipo di dati della colonna è xml e il codice XML viene tipizzato. Il valore è l'ID della raccolta contenente lo spazio dei nomi XML Schema di convalida della colonna

0 = Nessuna raccolta di XML Schema
default_object_id int ID dell'oggetto predefinito, indipendentemente dal fatto che si tratti di un oggetto autonomo sp_bindefault o di un vincolo a livello DEFAULT di colonna inline. La colonna parent_object_id di un oggetto predefinito inline a livello di colonna è un riferimento alla tabella stessa.

0 = Nessun valore predefinito
rule_object_id int ID della regola autonoma associata alla colonna tramite sys.sp_bindrule.

0 = Nessuna regola autonoma. Per i vincoli a livello CHECK di colonna, vedere sys.check_constraints.
is_sparse bit 1 = La colonna è una colonna di tipo sparse. Per altre informazioni, vedere Usare colonne di tipo sparse.
is_column_set bit 1 = La colonna è un set di colonne. Per altre informazioni, vedere Usare colonne di tipo sparse.
generated_always_type tinyint Identifica quando viene generato il valore della colonna (è sempre 0 per le colonne nelle tabelle di sistema).

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL.

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

Per altre informazioni, vedere Tabelle temporali (database relazionali).
generated_always_type_desc nvarchar(60) Descrizione testuale del generated_always_type valore (sempre NOT_APPLICABLE per le colonne nelle tabelle di sistema)

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int Tipo di crittografia:

1 = Crittografia deterministica
2 = Crittografia casuale

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL
encryption_type_desc nvarchar(64) Descrizione del tipo di crittografia:

RANDOMIZED
DETERMINISTIC

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL
encryption_algorithm_name sysname Nome dell'algoritmo di crittografia. È supportato solo AEAD_AES_256_CBC_HMAC_SHA_512.

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL
column_encryption_key_id int ID della chiave di crittografia della colonna (CEK).

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL
column_encryption_key_database_name sysname Nome del database in cui esiste la chiave di crittografia della colonna se diverso dal database della colonna. NULL se la chiave esiste nello stesso database della colonna.

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL
is_hidden bit Indica se la colonna è nascosta:

0 = colonna regolare, non nascosta, visibile
1 = colonna nascosta

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL
is_masked bit Indica se la colonna è mascherata dalla maschera dati dinamica:

0 = colonna normale, non mascherata
1 = la colonna è mascherata

Si applica a: SQL Server 2016 (13.x) e versioni successive e database SQL
graph_type int Colonna interna con un set di valori. I valori sono compresi tra 1 e 8 per le colonne del grafo e NULL per altre.
graph_type_desc nvarchar(60) Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.
is_data_deletion_filter_column bit Indica se la colonna è la colonna del filtro di conservazione dei dati per la tabella.

Si applica a: SQL Edge di Azure
ledger_view_column_type int In caso contrario NULL, indica il tipo di una colonna in una visualizzazione libro mastro:

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

Per altre informazioni, vedere Panoramica del libro mastro.

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL
ledger_view_column_type_desc nvarchar(60) Se non NULLè , contiene una descrizione testuale del tipo di colonna in una visualizzazione libro mastro:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL
is_dropped_ledger_column bit Indica una colonna della tabella libro mastro eliminata.

Si applica a: SQL Server 2022 (16.x) e versioni successive e database SQL

Autorizzazioni

La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui l'utente è proprietario o per le quali dispone di autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi di utilizzo

Ottenere i dettagli della colonna per una tabella

Per ottenere i metadati per le colonne in una tabella, è possibile usare il codice seguente:

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

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