Freigeben über


sp_special_columns (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

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.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @table_name = ] N'table_name'

Der Name der Tabelle, die zum Zurückgeben von Kataloginformationen verwendet wird. @table_name ist "sysname" ohne Standard. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt.

[ @table_owner = ] N'table_owner'

Der Tabellenbesitzer der Tabelle, die zum Zurückgeben von Kataloginformationen verwendet wird. @table_owner ist "sysname" mit der Standardeinstellung "NULL. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt. Wenn @table_owner nicht angegeben ist, gelten die Standardtabellensichtsregeln des zugrunde liegenden Datenbankverwaltungssystems (DBMS).

In SQL Server werden die Spalten einer Tabelle zurückgegeben, wenn der aktuelle Benutzer/die aktuelle Benutzerin eine Tabelle mit dem angegebenen Namen besitzt. Wenn @table_owner nicht angegeben ist und der aktuelle Benutzer keine eigene Tabelle der angegebenen @table_name besitzt, sucht dieses Verfahren nach einer Tabelle der angegebenen @table_name , die dem Datenbankbesitzer gehört. Wenn die Tabelle vorhanden ist, werden die zugehörigen Spalten zurückgegeben.

[ @table_qualifier = ] N'table_qualifier'

Der Name des Tabellenqualifizierers. @table_qualifier ist "sysname" mit einem Standardwert von NULL. Verschiedene DBMS-Produkte unterstützen die dreiteilige Benennung 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 Char(1) mit einem Standardwert von R.

  • Der Typ R gibt die optimale Spalte oder den optimalen Satz von Spalten zurück, die durch Abrufen von Werten aus der Spalte oder Spalten eine beliebige Zeile in der angegebenen Tabelle eindeutig identifiziert werden können. Eine Spalte kann entweder ein Pseudokolumn sein, der für diesen Zweck entwickelt wurde, oder die Spalte oder Spalten eines eindeutigen Indexes für die Tabelle.

  • Der Typ V gibt die Spalte oder Spalten in der angegebenen Tabelle zurück, falls vorhanden, die von der Datenquelle automatisch aktualisiert werden, wenn ein beliebiger Wert in der Zeile von einer transaktion aktualisiert wird.

[ @scope = ] 'Scope'

Der minimale erforderliche Bereich der ROWID. @scope ist Char(1) mit einem Standardwert von T.

  • Bereich C gibt an, dass die ROWID nur gültig ist, wenn sie in dieser Zeile positioniert ist.
  • Der Bereich T gibt an, dass die ROWID für die Transaktion gültig ist.

[ @nullable = ] 'nullable'

Gibt an, ob die speziellen Spalten einen NULL Wert akzeptieren können. @nullable ist Char(1) mit einem Standardwert von U.

  • O Gibt spezielle Spalten an, die keine NULL-Werte zulassen.
  • U Gibt Spalten an, die teilweise nullfähig sind.

[ @ODBCVer = ] ODBCVer

Die verwendete ODBC-Version. @ODBCVer ist int mit einem Standardwert von 2. Dieser Wert gibt ODBC-Version 2.0 an. Weitere Informationen zum Unterschied zwischen ODBC Version 2.0 und ODBC Version 3.0 finden Sie in der ODBC-Spezifikation SQLSpecialColumns für ODBC Version 3.0.

Rückgabecodewerte

Keine.

Resultset

Spaltenname Datentyp Beschreibung
SCOPE smallint Der Bereich der Zeilen-ID. Kann 0, 1 oder 2 sein. SQL Server gibt immer zurück 0. 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 der Zeilen-ID gibt möglicherweise keine Zeile zurück, wenn die Zeile von einer anderen 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 @table_name . Dieses Feld gibt immer einen Wert zurück.
DATA_TYPE smallint ODBC-SQL-Datentyp.
TYPE_NAME sysname Datenquellenabhängiger Datentypname; Beispiel: 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 Länge in Byte, die für den Datentyp in seiner binären Form in der Datenquelle erforderlich ist, 10 z. B. für Zeichen(10), 4 für ganze Zahl und 2 für Smallint.
SCALE smallint Die Dezimalstellen der Spalte bezüglich der Datenquelle. NULL wird für Datentypen zurückgegeben, für die eine Skalierung nicht anwendbar ist.
PSEUDO_COLUMN smallint Gibt an, ob es sich bei der Spalte um eine Pseudospalte handelt. SQL Server gibt immer folgendes zurück 1:

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

Hinweise

sp_special_columnsSQLSpecialColumns entspricht in ODBC. Die zurückgegebenen Ergebnisse werden sortiert nach SCOPE.

Berechtigungen

Erfordert die SELECT-Berechtigung im Schema.

Beispiele

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

USE AdventureWorks2022;
GO

EXEC sp_special_columns @table_name = 'Department',
    @table_owner = 'HumanResources';