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_columns
SQLSpecialColumns
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';