Bagikan melalui


sys.columns (Transact-SQL)

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Mengembalikan baris untuk setiap kolom objek yang memiliki kolom, seperti tampilan atau tabel. Daftar berikut berisi tipe objek yang memiliki kolom:

  • Fungsi rakitan bernilai tabel (FT)
  • Fungsi SQL bernilai tabel sebaris (IF)
  • Tabel internal (IT)
  • Tabel sistem (S)
  • Fungsi SQL bernilai tabel (TF)
  • Tabel pengguna (U)
  • Tampilan (V)
Nama kolom Jenis data Deskripsi
object_id int ID objek tempat kolom ini berada.
name nama sysname Nama kolom. Unik dalam objek.
column_id int ID kolom. Unik dalam objek. ID kolom mungkin tidak berurutan.
system_type_id kecil ID jenis sistem kolom.
user_type_id int ID jenis kolom seperti yang ditentukan oleh pengguna. Untuk mengembalikan nama jenis, gabungkan ke tampilan katalog sys.type pada kolom ini.
max_length smallint Panjang maksimum (dalam byte) kolom.

-1 = Jenis data kolom adalah varchar(max), nvarchar(max), varbinary(max), atau xml.

Untuk kolom teks, ntext, dan gambar , max_length nilainya adalah 16 (mewakili pointer 16-byte saja) atau nilai yang ditetapkan oleh sp_tableoption 'text in row'.
precision kecil Presisi kolom jika berbasis numerik; jika tidak, 0.
scale kecil Skala kolom jika berbasis numerik; jika tidak, 0.
collation_name nama sysname Nama kolater kolom jika berbasis karakter; jika tidak NULL.
is_nullable bit 1 = Kolom dapat diubah ke null
0 = Kolom tidak dapat diubah ke null
is_ansi_padded bit 1 = Kolom menggunakan ANSI_PADDING ON perilaku jika karakter, biner, atau varian

0 = Kolom bukan karakter, biner, atau varian
is_rowguidcol bit 1 = Kolom adalah yang dideklarasikan ROWGUIDCOL
is_identity bit 1 = Kolom memiliki nilai identitas
is_computed bit 1 = Kolom adalah kolom komputasi
is_filestream bit 1 = Kolom adalah kolom FILESTREAM
is_replicated bit 1 = Kolom direplikasi
is_non_sql_subscribed bit 1 = Kolom memiliki pelanggan non-SQL Server
is_merge_published bit 1 = Kolom dipublikasikan gabungan
is_dts_replicated bit 1 = Kolom direplikasi dengan menggunakan SSIS
is_xml_document bit 1 = Konten adalah dokumen XML lengkap

0 = Konten adalah fragmen dokumen, atau tipe data kolom bukan xml
xml_collection_id int Bukan nol jika tipe data kolom adalah xml dan XML diketik. Nilainya adalah ID koleksi yang berisi namespace skema XML validasi kolom

0 = Tidak ada koleksi skema XML
default_object_id int ID objek default, terlepas dari apakah itu objek yang berdiri sendiri sp_bindefault, atau batasan tingkat DEFAULT kolom sebaris. Kolom parent_object_id objek default tingkat kolom sebaris adalah referensi kembali ke tabel itu sendiri.

0 = Tidak ada default
rule_object_id int ID aturan mandiri yang terikat ke kolom dengan menggunakan sys.sp_bindrule.

0 = Tidak ada aturan yang berdiri sendiri. Untuk batasan tingkat CHECK kolom, lihat sys.check_constraints.
is_sparse bit 1 = Kolom adalah kolom jarang. Untuk informasi selengkapnya, lihat Menggunakan kolom jarang.
is_column_set bit 1 = Kolom adalah kumpulan kolom. Untuk informasi selengkapnya, lihat Menggunakan kolom jarang.
generated_always_type kecil Mengidentifikasi kapan nilai kolom dihasilkan (selalu 0 untuk kolom dalam tabel sistem).

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru, dan SQL Database.

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

Untuk informasi selengkapnya, lihat Tabel Temporal (Database relasional).
generated_always_type_desc nvarchar(60) Deskripsi generated_always_type tekstual nilai (selalu NOT_APPLICABLE untuk kolom dalam tabel sistem)

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru, dan SQL Database.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int Jenis enkripsi:

1 = Enkripsi deterministik
2 = Enkripsi acak

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database
encryption_type_desc nvarchar(64) Deskripsi jenis enkripsi:

RANDOMIZED
DETERMINISTIC

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database
encryption_algorithm_name nama sysname Nama algoritma enkripsi. Hanya AEAD_AES_256_CBC_HMAC_SHA_512 yang didukung.

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database
column_encryption_key_id int ID kunci enkripsi kolom (CEK).

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database
column_encryption_key_database_name nama sysname Nama database tempat kunci enkripsi kolom ada jika berbeda dari database kolom. NULL jika kunci ada dalam database yang sama dengan kolom .

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database
is_hidden bit Menunjukkan apakah kolom disembunyikan:

0 = kolom reguler, tidak tersembunyi, terlihat
1 = kolom tersembunyi

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database
is_masked bit Menunjukkan apakah kolom diselubungi oleh masking data dinamis:

0 = kolom reguler, tidak bertopeng
1 = kolom ditutupi

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru, dan SQL Database
graph_type int Kolom internal dengan sekumpulan nilai. Nilainya antara 1 dan 8 untuk kolom grafik, dan NULL untuk yang lain.
graph_type_desc nvarchar(60) Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.
is_data_deletion_filter_column bit Menunjukkan apakah kolom adalah kolom filter retensi data untuk tabel.

Berlaku untuk: Azure SQL Edge
ledger_view_column_type int Jika tidak NULL, menunjukkan jenis kolom dalam tampilan ledger:

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

Untuk informasi selengkapnya, lihat Gambaran umum Ledger.

Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru, dan SQL Database
ledger_view_column_type_desc nvarchar(60) Jika tidak NULL, berisi deskripsi tekstual dari jenis kolom dalam tampilan ledger:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru, dan SQL Database
is_dropped_ledger_column bit Menunjukkan kolom tabel ledger yang dihilangkan.

Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru, dan SQL Database

Izin

Visibilitas metadata dalam tampilan katalog terbatas pada keamanan yang dimiliki pengguna, atau di mana pengguna diberikan beberapa izin. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

Contoh penggunaan

Mendapatkan detail kolom untuk tabel

Untuk mendapatkan metadata untuk kolom dalam tabel, Anda bisa menggunakan kode berikut:

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