Share via


sp_special_columns (Transact-SQL)

Aktualisiert: 14. April 2006

Gibt die optimale Gruppe von Spalten zurück, die eine Zeile in der Tabelle eindeutig identifizieren. Außerdem werden Spalten zurückgegeben, die automatisch aktualisiert werden, wenn ein Wert in der Zeile durch eine Transaktion aktualisiert wird.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_special_columns [@table_name =] 'table_name'        [,[@table_owner =] 'table_owner'] 
     [,[@qualifier =] 'qualifier'] 
     [,[@col_type =] 'col_type'] 
     [,[@scope =] 'scope']
     [,[@nullable =] 'nullable'] 
     [,[@ODBCVer =] 'ODBCVer'] ;

Argumente

  • [ @table_name =] 'table_name'
    Der Name der Tabelle, mit der Kataloginformationen zurückgegeben werden. name ist vom Datentyp sysname und hat keinen Standardwert. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt.
  • [ @table_owner =] 'table_owner'
    Der Tabellenbesitzer der Tabelle, mit der Kataloginformationen zurückgegeben werden. owner ist vom Datentyp sysname, der Standardwert ist NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Wenn owner nicht angegeben wird, gelten die Standardregeln für die Sichtbarkeit von Tabellen des zugrunde liegenden DBMS.

    In SQL Server werden die Spalten einer Tabelle zurückgegeben, wenn der aktuelle Benutzer diese Tabelle mit dem angegebenen Namen besitzt. Falls owner nicht angegeben ist und der aktuelle Benutzer keine Tabelle mit dem angegebenen name-Wert hat, wird nach einer Tabelle mit dem angegebenen name-Wert gesucht, die im Besitz des Datenbankbesitzers ist. Sofern eine solche Tabelle vorhanden ist, werden die Spalten dieser Tabelle zurückgegeben.

  • [ @qualifier =] 'qualifier'
    Der Name des Tabellenqualifizierers. qualifier ist vom Datentyp sysname, der Standardwert ist NULL. Verschiedene DBMS-Produkte unterstützen eine dreiteilige Namensgebung für Tabellen (qualifier.owner.name). In SQL Server stellt diese Spalte den Datenbanknamen dar. Bei einigen anderen Produkten stellt sie den Servernamen der Datenbankumgebung für die Tabelle dar.
  • [ @col_type =] 'col_type'
    Der Spaltentyp. col_type ist vom Datentyp char(1). Der Standardwert ist R. Der Typ R gibt die optimale(n) Spalte(n) zurück, mit der bzw. denen durch Aufrufen der entsprechenden Werte die einzelnen Zeilen in der angegebenen Tabelle eindeutig identifiziert werden können. Bei einer Spalte kann es sich entweder um eine Pseudospalte handeln, die speziell zu diesem Zweck erstellt wurde, oder um die Spalte(n) eines eindeutigen Indexes für die Tabelle. Der Typ V gibt ggf. die Spalte bzw. Spalten in der angegebenen Tabelle zurück, die automatisch von der Datenquelle aktualisiert werden, sobald ein Wert in der Zeile durch eine Transaktion aktualisiert wird.
  • [ @scope =] 'scope'
    Der mindestens erforderliche Bereich der ROWID. scope ist vom Datentyp char(1). Der Standardwert ist T. Der Bereich C definiert, dass die ROWID nur gültig ist, wenn sie sich in dieser Zeile befindet. Der Bereich T definiert, dass die ROWID für die Transaktion gültig ist.
  • [ @nullable =] 'nullable'
    Gibt an, ob die speziellen Spalten einen NULL-Wert akzeptieren. nullable ist vom Datentyp char(1). Der Standardwert ist U. O definiert spezielle Spalten, die keine NULL-Werte zulassen. U definiert Spalten, die teilweise NULL zulassen.
  • [ @ODBCVer =] 'ODBCVer'
    Die verwendete ODBC-Version. ODBCVer ist vom Datentyp int(4). Der Standardwert ist 2. Dieser bezeichnet die ODBC-Version 2.0. Weitere Informationen zu den Unterschieden zwischen ODBC, Version 2.0, und ODBC, Version 3.0, finden Sie in der SQLSpecialColumns-ODBC-Spezifikation für ODBC, Version 3.0.

Rückgabecodewerte

Keine

Resultsets

Spaltenname Datentyp Beschreibung

SCOPE

smallint

Der Bereich der Zeilen-ID. Mögliche Werte sind 0, 1 oder 2. SQL Server gibt immer 0 zurück. Dieses Feld gibt immer einen Wert zurück.

0 = SQL_SCOPE_CURROW. Die Zeilen-ID ist nur garantiert gültig, wenn sie sich in dieser Zeile befindet. Eine spätere erneute Auswahl mit dieser Zeilen-ID gibt möglicherweise keine Zeile zurück, wenn die Zeile durch eine andere Transaktion aktualisiert oder gelöscht wurde.

1 = SQL_SCOPE_TRANSACTION. Die Zeilen-ID ist für die Dauer der aktuellen Transaktion garantiert gültig.

2 = SQL_SCOPE_SESSION. Die Zeilen-ID ist für die Dauer der Sitzung garantiert gültig (über Transaktionsgrenzen hinweg).

COLUMN_NAME

sysname

Spaltenname für jede Spalte der zurückgegebenen Tabelle table. Dieses Feld gibt immer einen Wert zurück.

DATA_TYPE

smallint

ODBC-SQL-Datentyp.

TYPE_NAME

sysname

Von der Datenquelle abhängiger Datentypname, z. B. char, varchar, money oder text.

PRECISION

Int

Die Genauigkeit der Spalte bezüglich der Datenquelle. Dieses Feld gibt immer einen Wert zurück.

LENGTH

Int

Die Länge in Bytes, die für den Datentyp in seiner binären Form in der Datenquelle erforderlich ist, z. B. 10 für char(10), 4 für integer und 2 für smallint.

SCALE

smallint

Die Dezimalstellen der Spalte bezüglich der Datenquelle. NULL wird für Datentypen zurückgegeben, auf die Dezimalstellen nicht anwendbar sind.

PSEUDO_COLUMN

smallint

Gibt an, ob es sich bei der Spalte um eine Pseudospalte handelt. SQL Server gibt immer 1 zurück:

0 = SQL_PC_UNKNOWN

1 = SQL_PC_NOT_PSEUDO

2 = SQL_PC_PSEUDO

Hinweise

sp_special_columns entspricht SQLSpecialColumns in ODBC. Die zurückgegebenen Ergebnisse sind nach der SCOPE-Spalte geordnet.

Berechtigungen

Setzt die SELECT-Berechtigung für das Schema voraus.

Beispiele

Im folgenden Beispiel werden Informationen zu der Spalte zurückgegeben, die Zeilen in der HumanResources.Department-Tabelle eindeutig identifiziert.

USE AdventureWorks;
GO
EXEC sp_special_columns @table_name = 'Department', 
   @table_owner = 'HumanResources'

Siehe auch

Verweis

Gespeicherte Prozeduren für Kataloginformationen (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Geänderter Inhalt:
  • PSEUDO_COLUMN-Werte korrigiert.