Udostępnij za pomocą


sys.columns (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca wiersz dla każdej kolumny obiektu zawierającego kolumny, takie jak widoki lub tabele. Poniższa lista zawiera typy obiektów, które mają kolumny:

  • Funkcje zestawu wartości tabeli (FT)
  • Wbudowane funkcje SQL o wartości tabeli (IF)
  • Tabele wewnętrzne (IT)
  • Tabele systemowe (S)
  • Funkcje SQL wartości tabeli (TF)
  • Tabele użytkowników (U)
  • Widoki (V)
Nazwa kolumny Typ danych Opis
object_id Int Identyfikator obiektu, do którego należy ta kolumna.
name nazwa systemu Nazwa kolumny. Jest unikatowy w obiekcie.
column_id Int Identyfikator kolumny. Jest unikatowy w obiekcie. Identyfikatory kolumn mogą nie być sekwencyjne.
system_type_id tinyint Identyfikator typu systemowego kolumny.
user_type_id Int Identyfikator typu kolumny zdefiniowanej przez użytkownika. Aby zwrócić nazwę typu, dołącz do widoku katalogu sys.types w tej kolumnie.
max_length smallint Maksymalna długość (w bajtach) kolumny.

-1 = Typ danych kolumny to varchar(max), nvarchar(max), varbinary(max)lub xml.

W przypadku kolumn tekstowych, ntekstowych i max_length wartość to 16 (reprezentująca tylko wskaźnik 16 bajtów) lub wartość ustawiona przez sp_tableoption 'text in row'wartość .
precision tinyint Precyzja kolumny, jeśli jest oparta na wartości liczbowej; w przeciwnym razie, 0.
scale tinyint Skala kolumny, jeśli jest oparta na wartościach liczbowych; w przeciwnym razie, 0.
collation_name nazwa systemu Nazwa sortowania kolumny, jeśli jest oparta na znakach; w przeciwnym razie NULL.
is_nullable bit 1 = Kolumna jest dopuszczana do wartości null
0 = Kolumna nie może zawierać wartości null
is_ansi_padded bit 1 = Kolumna używa ANSI_PADDING ON zachowania, jeśli znak, binarny lub wariant

0 = Kolumna nie jest znakiem, plikiem binarnym ani wariantem
is_rowguidcol bit 1 = Kolumna jest zadeklarowana ROWGUIDCOL
is_identity bit 1 = Kolumna ma wartości tożsamości
is_computed bit 1 = Kolumna jest kolumną obliczeniową
is_filestream bit 1 = Kolumna jest kolumną FILESTREAM
is_replicated bit 1 = Kolumna jest replikowana
is_non_sql_subscribed bit 1 = Kolumna ma subskrybenta programu innego niż SQL Server
is_merge_published bit 1 = Kolumna jest publikowana w scalaniu
is_dts_replicated bit 1 = Kolumna jest replikowana przy użyciu usług SSIS
is_xml_document bit 1 = Zawartość jest kompletnym dokumentem XML

0 = Zawartość jest fragmentem dokumentu lub typ danych kolumny nie jest xml
xml_collection_id Int Nonzero, jeśli typ danych kolumny to xml , a kod XML jest wpisany. Wartość jest identyfikatorem kolekcji zawierającej walidację przestrzeni nazw schematu XML kolumny

0 = Brak kolekcji schematów XML
default_object_id Int Identyfikator obiektu domyślnego, niezależnie od tego, czy jest to obiekt autonomiczny sp_bindefault, czy wbudowany, ograniczenie na poziomie DEFAULT kolumny. Kolumna parent_object_id domyślnego obiektu na poziomie kolumny w linii jest odniesieniem do samej tabeli.

0 = Brak wartości domyślnej
rule_object_id Int ID samodzielnej reguły powiązanej z kolumną za pomocą .sys.sp_bindrule

0 = Brak reguły autonomicznej. Aby uzyskać informacje o ograniczeniach na poziomie CHECK kolumny, zobacz sys.check_constraints.
is_sparse bit 1 = Kolumna jest kolumną rozrzedliwą. Aby uzyskać więcej informacji, zobacz Use sparse columns (Używanie rozrzednych kolumn).
is_column_set bit 1 = Kolumna jest zestawem kolumn. Aby uzyskać więcej informacji, zobacz Use sparse columns (Używanie rozrzednych kolumn).
generated_always_type tinyint Określa, kiedy wartość kolumny jest generowana (zawsze dotyczy 0 kolumn w tabelach systemowych).

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Dotyczy: SQL Server 2022 (16.x) i nowsze wersje oraz SQL Database.

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

Aby uzyskać więcej informacji, zobacz Tabele czasowe.
generated_always_type_desc nvarchar(60) Tekstowy opis generated_always_type wartości (zawsze NOT_APPLICABLE w przypadku kolumn w tabelach systemowych)

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Dotyczy: SQL Server 2022 (16.x) i nowsze wersje oraz SQL Database.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type Int Typ szyfrowania:

1 = Szyfrowanie deterministyczne
2 = Szyfrowanie losowe

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database
encryption_type_desc nvarchar(64) Opis typu szyfrowania:

RANDOMIZED
DETERMINISTIC

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database
encryption_algorithm_name nazwa systemu Nazwa algorytmu szyfrowania. Obsługiwany jest tylko warunek AEAD_AES_256_CBC_HMAC_SHA_512.

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database
column_encryption_key_id Int Identyfikator klucza szyfrowania kolumny (CEK).

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database
column_encryption_key_database_name nazwa systemu Nazwa bazy danych, w której istnieje klucz szyfrowania kolumny, jeśli różni się od bazy danych kolumny. NULL jeśli klucz istnieje w tej samej bazie danych co kolumna.

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database
is_hidden bit Wskazuje, czy kolumna jest ukryta:

0 = zwykła, niewidoczna, widoczna kolumna
1 = ukryta kolumna

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database
is_masked bit Wskazuje, czy kolumna jest maskowana przez dynamiczne maskowanie danych:

0 = zwykła, niemaskowana kolumna
1 = kolumna jest maskowana

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje oraz SQL Database
graph_type Int Kolumna wewnętrzna z zestawem wartości. Wartości znajdują się między kolumnami 1 grafów i 8NULL dla innych.
graph_type_desc nvarchar(60) Zidentyfikowane tylko do celów informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.
is_data_deletion_filter_column bit Wskazuje, czy kolumna jest kolumną filtru przechowywania danych dla tabeli.

Dotyczy: Azure SQL Edge
ledger_view_column_type Int Jeśli nie NULL, wskazuje typ kolumny w widoku rejestru:

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

Aby uzyskać więcej informacji, zobacz Omówienie rejestru.

Dotyczy: SQL Server 2022 (16.x) i nowsze wersje oraz SQL Database
ledger_view_column_type_desc nvarchar(60) Jeśli nie NULL, zawiera tekstowy opis typu kolumny w widoku rejestru:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Dotyczy: SQL Server 2022 (16.x) i nowsze wersje oraz SQL Database
is_dropped_ledger_column bit Wskazuje kolumnę tabeli rejestru, która została porzucona.

Dotyczy: SQL Server 2022 (16.x) i nowsze wersje oraz SQL Database
vector_dimensions Int Wskazuje, ile wymiarów ma wektor.

Dotyczy do: SQL Server 2025 (17.x) i nowszych wersji oraz SQL Database
vector_base_type tinyint Wskazuje typ danych używany do przechowywania wartości wymiarów wektorów.

0 = 32-bitowy (pojedynczy precyzja) pływak
1 = 16-bitowa (półprecyzja) float 1

Dotyczy do: SQL Server 2025 (17.x) i nowszych wersji oraz SQL Database
vector_base_type_desc nvarchar(10) Zawiera tekstowy opis typu danych używany do przechowywania wartości wymiarów wektorowych.

Dotyczy do: SQL Server 2025 (17.x) i nowszych wersji oraz SQL Database

1 Więcej informacji można znaleźć w artykule Format zmiennoprzecinkowy o półprecyzji.

Uprawnienia

Widoczność metadanych w widokach katalogu jest ograniczona do obiektów, których właścicielem jest użytkownik lub w stosunku do których użytkownik ma jakieś uprawnienia. Aby uzyskać więcej informacji, zobacz Konfiguracja widoczności metadanych.

Przykłady użycia

Pobieranie szczegółów kolumny dla tabeli

Aby uzyskać metadane kolumn w tabeli, użyj następującego kodu:

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