Aracılığıyla paylaş


sys.columns (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Görünümler veya tablolar gibi sütunları olan bir nesnenin her sütunu için bir satır döndürür. Aşağıdaki liste, sütunları olan nesne türlerini içerir:

  • Tablo değerli bütünleştirilmiş kod işlevleri (FT)
  • Satır içi tablo değerli SQL işlevleri (EĞER)
  • İç tablolar (BT)
  • Sistem tabloları (S)
  • Tablo değerli SQL işlevleri (TF)
  • Kullanıcı tabloları (U)
  • Görünümler (V)
Sütun adı Veri türü Açıklama
object_id Int Bu sütunun ait olduğu nesnenin kimliği.
name sysname Kolonun adı. nesnesinde benzersizdir.
column_id Int Sütunun kimliği. nesnesinde benzersizdir. Sütun kimlikleri sıralı olmayabilir.
system_type_id tinyint Sütunun sistem türünün kimliği.
user_type_id Int Kullanıcı tarafından tanımlanan sütun türünün kimliği. Türün adını döndürmek için bu sütundaki sys.types katalog görünümüne katılın.
max_length smallint Sütunun uzunluk üst sınırı (bayt cinsinden).

-1 = Sütun veri türü varchar(max), nvarchar(max), varbinary(max)veya xml.

Metin, ntext ve görüntü sütunları max_length için değer (yalnızca 16 bayt işaretçisini temsil eden) veya tarafından 16ayarlanan değerdir sp_tableoption 'text in row' .
precision tinyint Sayısal tabanlıysa sütunun duyarlığı; aksi takdirde , 0.
scale tinyint Sayısal tabanlıysa sütun ölçeği; aksi takdirde , 0.
collation_name sysname Karakter tabanlıysa sütunun harmanlamasının adı; aksi takdirde NULL.
is_nullable bit 1 = Sütun null atanabilir
0 = Sütun boş değer atanamaz
is_ansi_padded bit 1= Sütun karakter, ikili veya değişkense davranışı kullanır ANSI_PADDING ON

0 = Sütun karakter, ikili veya değişken değil
is_rowguidcol bit 1 = Sütun bildirilir ROWGUIDCOL
is_identity bit 1 = Sütunda kimlik değerleri var
is_computed bit 1 = Sütun hesaplanan bir sütundur
is_filestream bit 1 = Sütun bir FILESTREAM sütunudur
is_replicated bit 1 = Sütun çoğaltıldı
is_non_sql_subscribed bit 1 = Sütunun SQL Server abonesi olmayan bir abonesi var
is_merge_published bit 1 = Sütun birleştirme ile yayımlandı
is_dts_replicated bit 1 = Sütun SSIS kullanılarak çoğaltılır
is_xml_document bit 1 = İçerik tam bir XML belgesidir

0= İçerik bir belge parçası veya sütun veri türü xml değil
xml_collection_id Int Sütunun veri türü xml ise ve XML yazıldıysa sıfır olmayan. Değer, sütunun doğrulayan XML şeması ad alanını içeren koleksiyonun kimliğidir

0 = XML şema koleksiyonu yok
default_object_id Int Bağımsız nesne sp_bindefault veya satır içi sütun düzeyi DEFAULT kısıtlaması olmasına bakılmaksızın varsayılan nesnenin kimliği. Bir satır içi sütun seviyesindeki varsayılan nesnenin sütunu, parent_object_id tablonun kendisine geri dönüş referansıdır.

0 = Varsayılan yok
rule_object_id Int Sütuna bağlı bağımsız kuralın ID'si kullanılarak sys.sp_bindrule.

0 = Tek başına kural yoktur. Sütun düzeyi CHECK kısıtlamaları için bkz. sys.check_constraints.
is_sparse bit 1 = Sütun seyrek bir sütundur. Daha fazla bilgi için bkz. Seyrek sütunları kullanma.
is_column_set bit 1 = Sütun bir sütun kümesidir. Daha fazla bilgi için bkz. Seyrek sütunları kullanma.
generated_always_type tinyint Sütun değerinin ne zaman oluşturulduğunu tanımlar (her zaman 0 sistem tablolarındaki sütunlar içindir).

için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri ve SQL Veritabanı.

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

Daha fazla bilgi için bkz. Zamana bağlı tablolar.
generated_always_type_desc nvarchar(60) Değerin generated_always_type metinsel açıklaması (her zaman NOT_APPLICABLE sistem tablolarındaki sütunlar için)

için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri ve SQL Veritabanı.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type Int Şifreleme türü:

1 = Belirleyici şifreleme
2 = Rastgele şifreleme

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı
encryption_type_desc nvarchar(64) Şifreleme türü açıklaması:

RANDOMIZED
DETERMINISTIC

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı
encryption_algorithm_name sysname Şifreleme algoritmasının adı. Yalnızca AEAD_AES_256_CBC_HMAC_SHA_512 desteklenir.

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı
column_encryption_key_id Int Sütun şifreleme anahtarının (CEK) kimliği.

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı
column_encryption_key_database_name sysname Sütunun veritabanından farklıysa, sütun şifreleme anahtarının bulunduğu veritabanının adı. NULL anahtarı sütunla aynı veritabanında varsa.

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı
is_hidden bit Sütunun gizli olup olmadığını gösterir:

0 = normal, gizli olmayan, görünür sütun
1 = gizli sütun

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı
is_masked bit Sütunun dinamik veri maskeleme tarafından maskelenip maskelenmediğini gösterir:

0 = normal, maskelenmemiş sütun
1 = sütun maskelendi

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri ve SQL Veritabanı
graph_type Int Değer kümesi içeren iç sütun. Değerler, graf sütunları 1 için ve 8 diğerleri için arasındadırNULL.
graph_type_desc nvarchar(60) Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.
is_data_deletion_filter_column bit Sütunun tablonun veri saklama filtresi sütunu olup olmadığını gösterir.

için geçerlidir: Azure SQL Edge
ledger_view_column_type Int değilse NULL, bir kayıt defteri görünümündeki sütunun türünü gösterir:

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

Daha fazla bilgi için bkz . Genel muhasebeye genel bakış.

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri ve SQL Veritabanı
ledger_view_column_type_desc nvarchar(60) değilse NULL, bir kayıt defteri görünümündeki sütun türünün metinsel açıklamasını içerir:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri ve SQL Veritabanı
is_dropped_ledger_column bit Bırakılan bir kayıt defteri tablosu sütununu gösterir.

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri ve SQL Veritabanı
vector_dimensions Int Vektörün kaç boyutlu olduğunu gösterir.

Şunlar için geçerlidir: SQL Server 2025 (17.x) ve sonraki sürümler, ayrıca SQL Veritabanı
vector_base_type tinyint Vektör boyut değerlerini depolamak için kullanılan veri türünü gösterir.

0 = 32-bit (tek hassasiyetli) süzülme
1 = 16-bit (yarı hassasiyet) float 1

Şunlar için geçerlidir: SQL Server 2025 (17.x) ve sonraki sürümler, ayrıca SQL Veritabanı
vector_base_type_desc nvarchar(10) Vektör boyut değerlerini depolamak için kullanılan veri türünün metinsel açıklamasını içerir.

Şunlar için geçerlidir: SQL Server 2025 (17.x) ve sonraki sürümler, ayrıca SQL Veritabanı

1 Daha fazla bilgi için bkz. Yarım hassasiyetli kayan nokta formatı.

İzinler

Katalog görünümlerindeki meta verilerin görünürlüğü, kullanıcının sahip olduğu veya kullanıcıya bazı izinlerin verildiği güvenli hale getirilebilir öğelerle sınırlıdır. Daha fazla bilgi için bkz. Meta veri görünürlüğü yapılandırması.

Kullanım örnekleri

Tablonun sütun ayrıntılarını alma

Bir tablodaki sütunlar için meta veri elde etmek için aşağıdaki kodu kullanın:

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