Dela via


sys.columns (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Returnerar en rad för varje kolumn i ett objekt som har kolumner, till exempel vyer eller tabeller. Följande lista innehåller de objekttyper som har kolumner:

  • Tabellvärdessammansättningsfunktioner (FT)
  • Infogade tabellvärdesbaserade SQL-funktioner (IF)
  • Interna tabeller (IT)
  • Systemtabeller (S)
  • Tabellvärdesbaserade SQL-funktioner (TF)
  • Användartabeller (U)
  • Vyer (V)
Kolumnnamn Datatyp Beskrivning
object_id Int ID för det objekt som den här kolumnen tillhör.
name sysname Namnet på kolumnen. Är unikt i objektet.
column_id Int ID för kolumnen. Är unikt i objektet. Kolumn-ID:t kanske inte är sekventiella.
system_type_id tinyint ID för kolumnens systemtyp.
user_type_id Int ID för den typ av kolumn som definieras av användaren. Om du vill returnera namnet på typen ansluter du till katalogvyn sys.types i den här kolumnen.
max_length smallint Maximal längd (i byte) för kolumnen.

-1 = Kolumndatatypen är varchar(max), nvarchar(max), varbinary(max)eller xml-.

För text-, ntext- och bildkolumnermax_length är 16 värdet (representerar endast pekaren på 16 byte) eller värdet som anges av sp_tableoption 'text in row'.
precision tinyint Precision för kolumnen om den är numerisk. annars . 0
scale tinyint Skala av kolumn om den är numeriskt baserad. annars . 0
collation_name sysname Namn på sortering av kolumnen om den är teckenbaserad. annars NULL.
is_nullable bit 1 = Kolumnen är null
0 = Kolumnen kan inte ogiltigförklaras
is_ansi_padded bit 1 = Kolumnen använder ANSI_PADDING ON beteende om tecken, binär eller variant

0 = Kolumnen är inte tecken, binär eller variant
is_rowguidcol bit 1 = Kolumnen är en deklarerad ROWGUIDCOL
is_identity bit 1 = Kolumnen har identitetsvärden
is_computed bit 1 = Kolumn är en beräknad kolumn
is_filestream bit 1 = Kolumnen är en FILESTREAM-kolumn
is_replicated bit 1 = Kolumnen replikeras
is_non_sql_subscribed bit 1 = Kolumnen har en icke-SQL Server-prenumerant
is_merge_published bit 1 = Kolumnen är sammanslagningspublicerad
is_dts_replicated bit 1 = Kolumnen replikeras med hjälp av SSIS
is_xml_document bit 1 = Innehållet är ett fullständigt XML-dokument

0 = Innehållet är ett dokumentfragment, eller så är kolumndatatypen inte xml
xml_collection_id Int Nonzero om datatypen för kolumnen är xml och XML skrivs. Värdet är ID:t för samlingen som innehåller det verifierande XML-schemanamnområdet för kolumnen

0 = Ingen XML-schemasamling
default_object_id Int ID för standardobjektet, oavsett om det är ett fristående objekt sp_bindefault eller en infogad begränsning på kolumnnivå DEFAULT . Den parent_object_id kolumnen i ett standardobjekt på infogad kolumnnivå är en referens tillbaka till själva tabellen.

0 = Inget standardvärde
rule_object_id Int ID för den fristående regeln som är bunden till kolumnen med hjälp av sys.sp_bindrule.

0 = Ingen fristående regel. För begränsningar på kolumnnivå CHECK , se sys.check_constraints.
is_sparse bit 1 = Kolumnen är en gles kolumn. Mer information finns i Använda glesa kolumner.
is_column_set bit 1 = Kolumn är en kolumnuppsättning. Mer information finns i Använda glesa kolumner.
generated_always_type tinyint Identifierar när kolumnvärdet genereras (är alltid 0 för kolumner i systemtabeller).

gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Gäller för: SQL Server 2022 (16.x) och senare versioner och SQL Database.

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

Mer information finns i temporala tabeller.
generated_always_type_desc nvarchar(60) Textbeskrivning av generated_always_type värdet (alltid NOT_APPLICABLE för kolumner i systemtabeller)

gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Gäller för: SQL Server 2022 (16.x) och senare versioner och SQL Database.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type Int Krypteringstyp:

1 = Deterministisk kryptering
2 = Randomiserad kryptering

Gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database
encryption_type_desc nvarchar(64) Beskrivning av krypteringstyp:

RANDOMIZED
DETERMINISTIC

Gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database
encryption_algorithm_name sysname Namnet på krypteringsalgoritmen. Endast AEAD_AES_256_CBC_HMAC_SHA_512 stöds.

Gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database
column_encryption_key_id Int ID för kolumnkrypteringsnyckeln (CEK).

Gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database
column_encryption_key_database_name sysname Namnet på databasen där kolumnkrypteringsnyckeln finns om den skiljer sig från kolumnens databas. NULL om nyckeln finns i samma databas som kolumnen.

Gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database
is_hidden bit Anger om kolumnen är dold:

0 = vanlig, inte dold, synlig kolumn
1 = dold kolumn

Gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database
is_masked bit Anger om kolumnen maskeras av dynamisk datamaskering:

0 = vanlig, inte maskerad kolumn
1 = kolumnen är maskerad

Gäller för: SQL Server 2016 (13.x) och senare versioner och SQL Database
graph_type Int Intern kolumn med en uppsättning värden. Värdena är mellan 1 och 8 för grafkolumner och NULL för andra.
graph_type_desc nvarchar(60) Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.
is_data_deletion_filter_column bit Anger om kolumnen är kolumnen för datakvarhållningsfilter för tabellen.

gäller för: Azure SQL Edge
ledger_view_column_type Int Om inte NULLanger anger typen av en kolumn i en transaktionsregistervy:

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

Mer information finns i Översikt över transaktionsregister.

Gäller för: SQL Server 2022 (16.x) och senare versioner och SQL Database
ledger_view_column_type_desc nvarchar(60) Om inte NULL, innehåller en textbeskrivning av typen av en kolumn i en transaktionsregistervy:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Gäller för: SQL Server 2022 (16.x) och senare versioner och SQL Database
is_dropped_ledger_column bit Anger en tabellkolumn i transaktionsregistret som har tagits bort.

Gäller för: SQL Server 2022 (16.x) och senare versioner och SQL Database
vector_dimensions Int Anger hur många dimensioner vektorn har

Gäller för: SQL Server 2025 (17.x) förhandsversioner och senare versioner samt SQL Database
vector_base_type Int Anger den datatyp som används för att lagra värden för vektordimensioner.
0 = 32-bitars flyttal (enkel precision)
1 = 16-bitars (halvprecision) flyttal

Gäller för: SQL Server 2025 (17.x) förhandsversioner och senare versioner samt SQL Database
vector_base_type_desc Int Innehåller textbeskrivningen för den datatyp som används för att lagra vektordimensionsvärden.

Gäller för: SQL Server 2025 (17.x) förhandsversioner och senare versioner samt SQL Database

Behörigheter

Synligheten för metadata i katalogvyer är begränsad till skyddsbara objekt som en användare antingen äger eller som användaren har beviljats viss behörighet för. För mer information, se inställningar för metadatasynlighet.

Användningsexempel

Hämta kolumninformation för en tabell

Om du vill hämta metadata för kolumner i en tabell kan du använda följande kod:

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