sys.columns (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas 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 . Kolumnen parent_object_id i ett inline-kolumnnivå-standardobjekt är en referens tillbaka till tabellen själv.

0 = Inget standardvärde
rule_object_id Int ID för den fristående regeln som är bunden till kolumnen genom att använda 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 NULLinnehåller 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) och senare versioner, samt SQL Database
vector_base_type tinyint Anger den datatyp som används för att lagra värden för vektordimensioner.

0 = 32-bitars (enkelprecision) flottör
1 = 16-bitars (halvprecision) flottör 1

Gäller för: SQL Server 2025 (17.x) och senare versioner, samt SQL Database
vector_base_type_desc nvarchar(10) 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) och senare versioner, samt SQL Database

1 För mer information, se Halvprecisionsflyttalsformat.

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. Mer information finns i Konfiguration av synlighet för metadata.

Användningsexempel

Hämta kolumninformation för en tabell

För att få metadata för kolumner i en tabell, använd följande kod:

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