Comparteix a través de


sys.columns (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric

Devuelve una fila para cada columna de un objeto que incluye columnas, como vistas o tablas. La lista siguiente contiene los tipos de objeto que tienen columnas:

  • Funciones de ensamblado con valores de tabla (FT)
  • Funciones SQL con valores de tabla insertados (IF)
  • Tablas internas (IT)
  • Tablas del sistema (S)
  • Funciones SQL con valores de tabla (TF)
  • Tablas de usuario (U)
  • Vistas (V)
Nombre de la columna Tipo de datos Descripción
object_id int Identificador del objeto al que pertenece esta columna.
name sysname Nombre de la columna. Es único en el objeto.
column_id int Identificador de la columna. Es único en el objeto. Los Id. de columna no tienen que ser secuenciales.
system_type_id tinyint Id. del tipo de sistema de la columna.
user_type_id int Id. del tipo de la columna, tal como lo ha definido el usuario. Para devolver el nombre del tipo, combine con la vista de catálogo sys.types en esta columna.
max_length smallint Longitud máxima de la columna, en bytes.

-1 = El tipo de datos de columna es varchar(max), nvarchar(max), varbinary(max)o xml.

Para las columnas text, ntext e image , el max_length valor es 16 (que representa solo el puntero de 16 bytes) o el valor establecido por sp_tableoption 'text in row'.
precision tinyint Precisión de la columna si se basa en valores numéricos; de lo contrario, 0.
scale tinyint Escala de columna si se basa en valores numéricos; de lo contrario, 0.
collation_name sysname Nombre de la intercalación de la columna, si está basada en caracteres; de lo contrario, es NULL.
is_nullable bit 1 = Column admite valores NULL
0 = Column no admite valores NULL
is_ansi_padded bit 1 = Columna usa ANSI_PADDING ON el comportamiento si el carácter, el binario o la variante

0 = La columna no es carácter, binario o variante
is_rowguidcol bit 1 = Column es una declarada ROWGUIDCOL
is_identity bit 1 = La columna tiene valores de identidad
is_computed bit 1 = Column es una columna calculada
is_filestream bit 1 = Column es una columna FILESTREAM
is_replicated bit 1 = La columna se replica
is_non_sql_subscribed bit 1 = La columna tiene un suscriptor que no es de SQL Server
is_merge_published bit 1 = Column is merge-published
is_dts_replicated bit 1 = La columna se replica mediante SSIS
is_xml_document bit 1 = El contenido es un documento XML completo

0 = El contenido es un fragmento de documento o el tipo de datos de columna no es xml
xml_collection_id int El valor no es cero si el tipo de datos de la columna es xml y se escribe XML. El valor es el identificador de la colección que contiene el espacio de nombres de esquema XML de validación de la columna.

0 = No hay colección de esquemas XML
default_object_id int Identificador del objeto predeterminado, independientemente de si es un objeto independiente sp_bindefault o una restricción de nivel DEFAULT de columna insertada. La columna parent_object_id de un objeto predeterminado de nivel de columna insertada es una referencia a la propia tabla.

0 = Sin valor predeterminado
rule_object_id int Identificador de la regla independiente enlazada a la columna mediante sys.sp_bindrule.

0 = No hay ninguna regla independiente. Para obtener restricciones de nivel CHECK de columna, consulte sys.check_constraints.
is_sparse bit 1 = Column es una columna dispersa. Para obtener más información, consulte Uso de columnas dispersas.
is_column_set bit 1 = Column es un conjunto de columnas. Para obtener más información, consulte Uso de columnas dispersas.
generated_always_type tinyint Identifica cuándo se genera el valor de columna (siempre 0 es para las columnas de las tablas del sistema).

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y SQL Database.

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

Para obtener más información, consulte Tablas temporales (bases de datos relacionales).
generated_always_type_desc nvarchar(60) Descripción textual del generated_always_type valor (siempre NOT_APPLICABLE para columnas en tablas del sistema)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y SQL Database.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int Tipo de cifrado:

1 = Cifrado determinista
2 = Cifrado aleatorio

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database
encryption_type_desc nvarchar (64) Descripción del tipo de cifrado:

RANDOMIZED
DETERMINISTIC

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database
encryption_algorithm_name sysname Nombre del algoritmo de cifrado. Solo se admite AEAD_AES_256_CBC_HMAC_SHA_512.

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database
column_encryption_key_id int Identificador de la clave de cifrado de columnas (CEK).

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database
column_encryption_key_database_name sysname Nombre de la base de datos en la que existe la clave de cifrado de columna si es diferente al de la base de datos de la columna. NULL si la clave existe en la misma base de datos que la columna.

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database
is_hidden bit Indica si la columna está oculta:

0 = columna normal, no oculta y visible
1 = columna oculta

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database
is_masked bit Indica si la columna está enmascarada mediante el enmascaramiento dinámico de datos:

0 = columna normal, no enmascarada
1 = la columna está enmascarada

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, y SQL Database
graph_type int Columna interna con un conjunto de valores. Los valores están entre 1 y 8 para las columnas de grafo y NULL para otros.
graph_type_desc nvarchar(60) Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
is_data_deletion_filter_column bit Indica si la columna es la columna de filtros de retención de datos de la tabla.

Se aplica a: Azure SQL Edge
ledger_view_column_type int Si no es NULL, indica el tipo de una columna en una vista de libro de contabilidad:

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

Para obtener más información, consulte Información general del libro de contabilidad.

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y SQL Database
ledger_view_column_type_desc nvarchar(60) Si no es NULL, contiene una descripción textual del tipo de una columna en una vista de libro de contabilidad:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y SQL Database
is_dropped_ledger_column bit Indica una columna de tabla de libro de contabilidad que se quitó.

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores, y SQL Database

Permisos

La visibilidad de los metadatos en las vistas de catálogo se limita a los elementos protegibles y que son propiedad de un usuario o sobre los que el usuario ha recibido algún permiso. Para obtener más información, consulte Metadata Visibility Configuration.

Ejemplos de uso

Obtención de detalles de columna para una tabla

Para obtener metadatos para las columnas de una tabla, puede usar el código siguiente:

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');