Freigeben über


sys.index_columns (Transact-SQL)

Umfasst eine Zeile pro Spalte, die Teil eines Indexes vom Typ sys.indexes oder einer unsortierten Tabelle (Heap) ist.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version).

Spaltenname

Datentyp

Beschreibung

object_id

int

ID des Objekts, für das der Index definiert wird

index_id

int

ID des Indexes, in dem die Spalte definiert wird

index_column_id

int

Die ID der Indexspalte. index_column_id ist nur innerhalb der index_id eindeutig.

column_id

int

ID der Spalte in object_id.

0 = Zeilenbezeichner (RID, Row Identifier) in einem nicht gruppierten Index.

column_id ist nur innerhalb von object_id eindeutig.

key_ordinal

tinyint

Ordinalzahl (auf 1 basierend) innerhalb einer Gruppe von Schlüsselspalten.

0 = Keine Schlüsselspalte oder ein XML-Index, columnstore-Index oder räumlicher Index.

Hinweis

Ein XML-Index oder ein räumlicher Index kann kein Schlüssel sein, da die zugrunde liegenden Spalten nicht vergleichbar sind, d. h., dass ihre Werte nicht sortiert werden können.

partition_ordinal

tinyint

Ordinalzahl (1-basiert) innerhalb einer Gruppe von Partitionierungsspalten. Ein gruppierter columnstore-Index kann maximal 1 Partitionierungsspalte aufweisen.

0 = Keine Partitionierungsspalte.

is_descending_key

bit

1 = Indexschlüsselspalte hat eine absteigende Sortierreihenfolge.

0 = Indexschlüsselspalte hat eine aufsteigende Sortierreihenfolge, oder die Spalte ist Teil eines columnstore-Indexes oder Hashindexes.

is_included_column

bit

1 = Spalte ist eine Nichtschlüsselspalte, die dem Index mit der CREATE INDEX INCLUDE-Klausel hinzugefügt wurde, oder die Spalte ist Teil eines columnstore-Indexes.

0 = Spalte ist keine eingeschlossene Spalte.

Spalten, die implizit hinzugefügt wurden, da sie Teil des Gruppierungsschlüssels sind, werden nicht in sys.index_columns aufgelistet.

Spalten, die implizit hinzugefügt wurden, da sie eine Partitionierungsspalte sind, werden als 0 zurückgegeben.

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 Konfigurieren der Sichtbarkeit von Metadaten.

Beispiele

Im folgenden Beispiel werden alle Indizes und Indexspalten für die Tabelle Production.BillOfMaterials zurückgegeben.

USE AdventureWorks2012;
GO
SELECT i.name AS index_name
    ,COL_NAME(ic.object_id,ic.column_id) AS column_name
    ,ic.index_column_id
    ,ic.key_ordinal
,ic.is_included_column
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic 
    ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE i.object_id = OBJECT_ID('Production.BillOfMaterials');

Dies ist das Resultset.

index_name                                                 column_name        index_column_id key_ordinal is_included_column
---------------------------------------------------------- -----------------  --------------- ----------- -------------
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate ProductAssemblyID  1               1           0
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate ComponentID        2               2           0
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate StartDate          3               3           0
PK_BillOfMaterials_BillOfMaterialsID                       BillOfMaterialsID  1               1           0
IX_BillOfMaterials_UnitMeasureCode                         UnitMeasureCode    1               1           0

(5 row(s) affected)

Siehe auch

Verweis

Katalogsichten für Objekte (Transact-SQL)

Katalogsichten (Transact-SQL)

sys.indexes (Transact-SQL)

sys.objects (Transact-SQL)

CREATE INDEX (Transact-SQL)

sys.columns (Transact-SQL)

Konzepte

FAQ: Abfragen des SQL Server-Systemkatalogs