Vorgehensweise: Abfragen der Volltextschlüsselspalte (Transact-SQL)

Normalerweise müssen die Ergebnisse von CONTAINSTABLE- oder FREETEXTTABLE-Rowsetwertfunktionen mit der Basistabelle verknüpft werden. In solchen Fällen müssen Sie den Namen der eindeutigen Schlüsselspalte kennen. Sie können abfragen, ob ein bestimmter eindeutiger Index als Volltextschlüssel verwendet wird, und anschließend den Bezeichner der Volltextschlüsselspalte abrufen.

So überprüfen Sie, ob ein bestimmter eindeutiger Index als Volltextschlüsselspalte verwendet wird

  • Verwenden Sie eine SELECT-Anweisung, um die INDEXPROPERTY-Funktion aufzurufen. Geben Sie im Funktionsaufruf die OBJECT_ID-Funktion an, um den Namen der Tabelle (table_name) in die Tabellen-ID umzuwandeln. Geben Sie den Namen eines eindeutigen Indexes der Tabelle und die IsFulltextKey-Indexeigenschaft an, wie im folgenden Beispiel gezeigt:

    SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name',  'IsFulltextKey' );
    

    Diese Anweisung gibt den Wert 1 zurück, wenn der Index verwendet wird, um die Eindeutigkeit für die Spalte des Volltextschlüssels zu erzwingen, oder den Wert 0, wenn dies nicht der Fall ist.

    Weitere Informationen finden Sie weiter unten im Beispiel A.

So suchen Sie den Bezeichner der Volltextschlüsselspalte

  • Jede volltextfähige Tabelle beinhaltet eine Spalte, über die die Eindeutigkeit aller Tabellenzeilen erzwungen wird (die eindeutigeSchlüsselspalte). Die TableFulltextKeyColumn-Eigenschaft, die mit der OBJECTPROPERTYEX-Funktion ermittelt werden kann, enthält die Spalten-ID der eindeutigen Schlüsselspalte.

    Um diesen Bezeichner abzurufen, können Sie mit einer SELECT-Anweisung die OBJECTPROPERTYEX-Funktion aufrufen. Verwenden Sie die OBJECT_ID-Funktion, um den Namen der Tabelle (table_name) in die Tabellen-ID umzuwandeln, und geben Sie die TableFulltextKeyColumn-Eigenschaft wie folgt an:

    SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
    

    Weitere Informationen finden Sie unter den Beispielen "B. Abrufen des Bezeichners der Volltextschlüsselspalte" und "C. Abrufen des Namens der eindeutigen Schlüsselspalte" weiter unten in diesem Thema.

Beispiel

In allen folgenden Beispielen wird die Document-Tabelle der AdventureWorks2008R2-Datenbank verwendet.

A. Abfragen, ob ein bestimmter Index als Volltextschlüsselspalte verwendet wird

Im folgenden Beispiel wird abgefragt, ob der PK_Document_DocumentID-Index zum Erzwingen der Eindeutigkeit der Volltextschlüsselspalte verwendet wird:

USE AdventureWorks2008R2;
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID',  'IsFulltextKey' )

Dieses Beispiel gibt den Wert 1 zurück, wenn der PK_Document_DocumentID-Index verwendet wird, um die Eindeutigkeit der Volltextschlüsselspalte zu erzwingen. Andernfalls wird 0 oder NULL zurückgegeben. NULL impliziert, dass ein ungültiger Indexname verwendet wird, der Indexname der Tabelle nicht zugeordnet werden kann, die Tabelle nicht vorhanden ist oder eine andere Fehlerbedingung vorliegt.

B. Abrufen des Bezeichners der Volltextschlüsselspalte

Im folgenden Beispiel wird der Bezeichner der Volltextschlüsselspalte oder NULL zurückgegeben. NULL impliziert, dass ein ungültiger Indexname verwendet wird, der Indexname der Tabelle nicht zugeordnet werden kann, die Tabelle nicht vorhanden ist oder eine andere Fehlerbedingung vorliegt.

USE AdventureWorks2008R2;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO

C. Abrufen des Namens der eindeutigen Schlüsselspalte

Das folgende Beispiel zeigt, wie der Bezeichner der eindeutigen Schlüsselspalte verwendet werden kann, um programmgesteuert den Namen der Spalte zu ermitteln.

USE AdventureWorks2008R2;
GO
DECLARE @key_column sysname;
SET @key_column = Col_Name(Object_Id('Production.Document'),
ObjectProperty(Object_id('Production.Document'),
'TableFulltextKeyColumn') 
);
SELECT @key_column AS 'Unique Key Column';
GO

Dieses Beispiel gibt eine Resultsetspalte mit dem Namen Unique Key Column zurück, die eine einzelne Zeile mit dem Namen der eindeutigen Schlüsselspalte (DocumentID) der Document-Tabelle enthält. Beachten Sie, dass diese Abfrage NULL zurückgibt, wenn ein ungültiger Indexname verwendet wird, der Indexname der Tabelle nicht zugeordnet werden kann, die Tabelle nicht vorhanden ist oder eine andere Fehlerbedingung vorliegt.