sys.columns (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric

Gibt eine Zeile für jede Spalte eines Objekts zurück, das Spalten besitzt, z. B. Sichten oder Tabellen. Die folgende Liste enthält die Objekttypen mit Spalten:

  • Assembly-Tabellenwertfunktionen (FT)
  • Inline-SQL-Tabellenwertfunktionen (IF)
  • Interne Tabellen (IT)
  • Systemtabellen (S)
  • SQL-Tabellenwertfunktionen (TF)
  • Benutzertabellen (U)
  • Sichten (V)
Spaltenname Datentyp BESCHREIBUNG
object_id int Die ID des Objekts, zu dem diese Spalte gehört.
name sysname Name der Spalte. Ist eindeutig innerhalb des Objekts.
column_id int ID der Spalte. Ist eindeutig innerhalb des Objekts. Spalten-IDs sind möglicherweise nicht sequenziell.
system_type_id tinyint Die ID des Systemtyps der Spalte.
user_type_id int Die ID des vom Benutzer definierten Typs der Spalte. Stellen Sie einen Join mit der sys.types -Katalogsicht für diese Spalte her, um den Namen des Typs zurückzugeben.
max_length smallint Maximale Länge (in Byte) für die Spalte.

-1 = Spaltendatentyp ist varchar(max), nvarchar(max), varbinary(max) oder xml.

Für Text-, ntext- und Bildspalten ist 16 der max_length Wert (nur der 16-Byte-Zeiger) oder der von sp_tableoption 'text in row'.
precision tinyint Genauigkeit der Spalte, wenn numerisch basiert; andernfalls . 0
scale tinyint Skalierung der Spalte, wenn numerisch basiert; andernfalls . 0
collation_name sysname Name der Sortierung der Spalte, wenn diese zeichenbasiert ist, andernfalls NULL.
is_nullable bit 1 = Spalte ist nullwertebar.
0 = Spalte kann nicht null sein.
is_ansi_padded bit 1 = Spalte verwendet ANSI_PADDING ON Verhalten, wenn Zeichen, Binärdatei oder Variante

0 = Spalte ist kein Zeichen, keine Binärdatei oder keine Variante.
is_rowguidcol bit 1 = Spalte ist eine deklarierte ROWGUIDCOL
is_identity bit 1 = Spalte hat Identitätswerte
is_computed bit 1 = Spalte ist eine berechnete Spalte.
is_filestream bit 1 = Spalte ist eine FILESTREAM-Spalte
is_replicated bit 1 = Spalte wird repliziert
is_non_sql_subscribed bit 1 = Spalte hat einen Nicht-SQL Server-Abonnent
is_merge_published bit 1 = Spalte wird zusammengeführt
is_dts_replicated bit 1 = Spalte wird mithilfe von SSIS repliziert
is_xml_document bit 1 = Inhalt ist ein vollständiges XML-Dokument.

0 = Inhalt ist ein Dokumentfragment, oder der Spaltendatentyp ist keine XML
xml_collection_id int Ungleich 0, wenn der Datentyp der Spalte xml lautet und der XML-Code typisiert ist. Der Wert ist die ID der Auflistung, die den validierenden XML-Schemanamespace der Spalte enthält.

0 = Keine XML-Schemaauflistung
default_object_id int ID des Standardobjekts, unabhängig davon, ob es sich um ein eigenständiges Objekt sp_bindefault oder eine Inline-Einschränkung auf Spaltenebene DEFAULT handelt. Die parent_object_id-Spalte eines DEFAULT-Inlineobjekts ist ein Verweis auf die Tabelle selbst.

0 = Kein Standard
rule_object_id int ID der eigenständigen Regel, die mithilfe der Spalte gebunden ist sys.sp_bindrule.

0 = Keine eigenständige Regel. Informationen zu Einschränkungen auf Spaltenebene CHECK finden Sie unter sys.check_constraints.
is_sparse bit 1 = Spalte ist eine geringe Spalte. Weitere Informationen finden Sie unter Verwenden von Spalten mit geringem Zeitbedarf.
is_column_set bit 1 = Spalte ist ein Spaltensatz. Weitere Informationen finden Sie unter Verwenden von Spalten mit geringem Zeitbedarf.
generated_always_type tinyint Gibt an, wann der Spaltenwert generiert wird (ist immer 0 für Spalten in Systemtabellen).

Gilt für: SQL Server 2016 (13.x) und spätere Versionen sowie SQL-Datenbank.

0 = NOT_APPLICABLE
1 = AS_ROW_START
2 = AS_ROW_END

Gilt für: SQL Server 2022 (16.x) und höhere Versionen und SQL-Datenbank.

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

Weitere Informationen finden Sie unter Temporale Tabellen (relationale Datenbanken).
generated_always_type_desc nvarchar(60) Textbeschreibung des generated_always_type Werts (immer NOT_APPLICABLE für Spalten in Systemtabellen)

Gilt für: SQL Server 2016 (13.x) und spätere Versionen sowie SQL-Datenbank.

NOT_APPLICABLE
AS_ROW_START
AS_ROW_END

Gilt für: SQL Server 2022 (16.x) und höhere Versionen und SQL-Datenbank.

AS_TRANSACTION_ID_START
AS_TRANSACTION_ID_END
AS_SEQUENCE_NUMBER_START
AS_SEQUENCE_NUMBER_END
encryption_type int Verschlüsselungstyp:

1 = Deterministische Verschlüsselung
2 = Zufällige Verschlüsselung

Gilt für: SQL Server 2016 (13.x) und höhere Versionen und SQL-Datenbank
encryption_type_desc nvarchar(64) Beschreibung des Verschlüsselungstyps:

RANDOMIZED
DETERMINISTIC

Gilt für: SQL Server 2016 (13.x) und höhere Versionen und SQL-Datenbank
encryption_algorithm_name sysname Name des Verschlüsselungsalgorithmus. Nur AEAD_AES_256_CBC_HMAC_SHA_512 wird unterstützt.

Gilt für: SQL Server 2016 (13.x) und höhere Versionen und SQL-Datenbank
column_encryption_key_id int ID des Spaltenverschlüsselungsschlüssels (CEK).

Gilt für: SQL Server 2016 (13.x) und höhere Versionen und SQL-Datenbank
column_encryption_key_database_name sysname Der Name der Datenbank, in der der Spaltenverschlüsselungsschlüssel vorhanden ist, wenn sie sich von der Datenbank der Spalte unterscheidet. NULL, wenn der Schlüssel in derselben Datenbank wie die Spalte vorhanden ist.

Gilt für: SQL Server 2016 (13.x) und höhere Versionen und SQL-Datenbank
is_hidden bit Gibt an, ob die Spalte ausgeblendet ist:

0 = normale, nicht ausgeblendete, sichtbare Spalte
1 = ausgeblendete Spalte

Gilt für: SQL Server 2016 (13.x) und höhere Versionen und SQL-Datenbank
is_masked bit Gibt an, ob die Spalte durch dynamische Datenformatierung maskiert wird:

0 = normale, nicht maskierte Spalte
1 = Spalte ist maskiert

Gilt für: SQL Server 2016 (13.x) und höhere Versionen und SQL-Datenbank
graph_type int Interne Spalte mit einer Gruppe von Werten. Die Werte liegen zwischen 1 und 8 für Diagrammspalten und NULL für andere.
graph_type_desc nvarchar(60) Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
is_data_deletion_filter_column bit Gibt an, ob es sich bei der Spalte um die Filterspalte für die Datenbeibehaltung für die Tabelle handelt.

Gilt für: Azure SQL Edge
ledger_view_column_type int Andernfalls NULLgibt die Art einer Spalte in einer Hauptbuchansicht an:

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

Weitere Informationen finden Sie in der Übersicht über Ledger.

Gilt für: SQL Server 2022 (16.x) und höhere Versionen und SQL-Datenbank
ledger_view_column_type_desc nvarchar(60) Wenn nicht NULL, enthält eine textbezogene Beschreibung des Typs einer Spalte in einer Ledger-Ansicht:

TRANSACTION_ID
SEQUENCE_NUMBER
OPERATION_TYPE
OPERATION_TYPE_DESC

Gilt für: SQL Server 2022 (16.x) und höhere Versionen und SQL-Datenbank
is_dropped_ledger_column bit Gibt eine Buchtabellenspalte an, die gelöscht wurde.

Gilt für: SQL Server 2022 (16.x) und höhere Versionen und SQL-Datenbank

Berechtigungen

Die Sichtbarkeit der Metadaten in Katalogsichten ist auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.

Anwendungsbeispiele

Abrufen von Spaltendetails für eine Tabelle

Um Metadaten für Spalten in einer Tabelle abzurufen, können Sie den folgenden Code verwenden:

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